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

如何在Python Pandas DataFrame中生成正确的滞后移动平均?

修正后的3D Average列填充方案

嘿,刚把这个计算逻辑给捋顺了!之前我用下面这个公式尝试填充3D Average列:

df['3D Average'] = df.iloc[::-1].groupby('Hour').Value.rolling(window = 3).mean().shift().sort_index(level = 1).values

本来想着它会取后续3个同小时日期的数值来算平均,但后来才反应过来我的日期是递增排序的,实际需要的是滞后计算——也就是取当前行之前的3个同小时日期的数值来求平均,方向搞反了!

那修正后的正确公式应该是这样:

df['3D Average'] = df.groupby('Hour')['Value'].rolling(window=3).mean().shift().reset_index(level=0, drop=True).values

逻辑拆解:

  • 先按Hour字段分组,确保只对同一小时的数据做计算
  • rolling(window=3)截取每组内连续的3条数据
  • .mean()计算这3条数据的平均值
  • .shift()把计算结果向后偏移一行,这样当前行的3D Average就对应前3个同小时数据的平均值(不会包含当前行自身的数值)
  • 最后用reset_index处理分组产生的多层索引,让结果能完美匹配原DataFrame的行顺序

多亏了社区小伙伴之前的思路启发,终于把这个逻辑给调整对了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:47:38