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

如何使用pandas计算排除前序数据集的移动平均值

你要实现的是步长等于窗口大小的不重叠滚动窗口均值,可以用以下两种pandas方法实现:

方法1:groupby整数分组实现(全版本兼容)

该方法无需高版本pandas支持,适配所有场景:

import pandas as pd

# 示例数据,替换为你自己的数据集
df = pd.DataFrame({'value': [1, 2, 3, 4, 5, 6]})
window = 2 # 替换为你需要的窗口大小

# 每window个连续数据划分为独立分组,组内计算均值
df['target_ma'] = df.groupby(df.index // window)['value'].transform('mean')

逻辑说明:df.index // window会将连续的window个索引归为同一分组,分组之间完全独立,不会跨组引用前序组的数值。

方法2:rolling指定step参数(pandas 1.3+版本支持)

高版本pandas的rolling方法新增了步长参数,直接设置步长等于窗口大小即可得到不重叠的计算结果:

window = 2
# 结果默认对齐到每个窗口的最后一行位置
df['target_ma'] = df['value'].rolling(window=window, step=window).mean()

# 如果需要将均值填充到对应窗口的每一行,补充下方代码即可
df['target_ma'] = df['target_ma'].ffill()

如果需要先按其他维度(比如品类、日期分组)再计算,在groupby参数中补充对应维度列即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 15:24:01