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

如何用按同月同日分组得到的均值dataframe填充时间序列NA缺失值

解决方案

核心问题是df_norm为**(月,日)多级索引**,而补全频率后的原df为单日期索引,二者索引结构不匹配导致无法直接填充。提供两种可直接运行的实现方案:

方案1:复用已计算好的df_norm填充

先给df_norm的索引起明确名称,再通过日期的月、日属性匹配对应均值填充:

# 1. 给df_norm的多级索引命名,方便匹配
df_norm.index.names = ['month', 'day']

# 2. 补全原数据日频
df = df.asfreq('d')

# 3. 生成每个日期对应的同期均值序列
fill_vals = df.index.map(lambda x: df_norm.loc[(x.month, x.day), 'Volume'])

# 4. 填充缺失值
df['Volume'] = df['Volume'].fillna(fill_vals)

方案2:直接用transform一步生成填充序列

不需要单独存储df_norm,补全日频后直接通过分组转换生成与原df长度完全对齐的同期均值序列,填充更简便:

df = df.asfreq('d')
# 按同月同日分组取均值,生成和原df行数完全一致的均值序列
daily_norm = df.groupby([df.index.month, df.index.day])['Volume'].transform('mean')
# 直接填充
df['Volume'] = df['Volume'].fillna(daily_norm)

注意事项

如果你的时间范围包含闰年2月29日,且历史数据中没有足够的2月29日样本,可以额外加判断逻辑,把2月29日的填充值替换为2月28日或3月1日的均值即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:15:05