You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何匹配不同时间分辨率的Pandas DataFrame:生成每日温度值并实现无NaN合并

嘿,我来帮你搞定这个问题!你之前硬编码插值没成功很正常,其实Pandas针对时间序列的插值和合并有现成的好用工具,一步步来就行:

步骤1:统一日期格式为datetime类型

首先得确保两个DataFrame的日期列都被Pandas识别为时间类型,这是后续时间序列操作的基础:

import pandas as pd

# 假设你的visitors表有'date'列,temperatures表有'week_date'列(存储每周的日期,比如周一开始的日期)
visitors['date'] = pd.to_datetime(visitors['date'])
temperatures['week_date'] = pd.to_datetime(temperatures['week_date'])
步骤2:将周度温度扩展为每日温度

接下来把周度的温度数据转换成每日数据,这里用Pandas的resample和interpolate就能轻松实现,不用手动硬编码:

# 先把温度表的索引设为周日期
temperatures = temperatures.set_index('week_date')

# 按天重采样,并用时间插值法填充每日温度值
# method='time'会根据时间间隔计算中间值,比普通线性插值更贴合时间序列场景
daily_temperatures = temperatures.resample('D').interpolate(method='time')

# 如果你的业务需求是整周复用同一个温度值(比如每周温度是周平均),可以改用向前填充:
# daily_temperatures = temperatures.resample('D').ffill()
步骤3:合并访客数据与每日温度数据

现在两个数据集都是每日粒度了,直接通过日期键合并即可,用inner连接方式能确保最终结果没有NaN值(只保留两个表都有的日期):

# 把访客表的索引也设为日期,方便快速合并
visitors = visitors.set_index('date')

# 合并两个DataFrame
combined_df = visitors.join(daily_temperatures, how='inner')

# 如果你不想修改索引,也可以用merge方法:
# combined_df = pd.merge(visitors, daily_temperatures.reset_index(), on='date', how='inner')

这样处理后,你就能得到一个没有NaN值的合并数据集,其中每一行对应一天的访客数和当日温度啦!

内容的提问来源于stack exchange,提问作者gokdumano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 05:14:07