如何在DataFrame中计算窗口大小为4的滚动平均值?
实现方案
直接使用Pandas内置的rolling方法即可实现需求,无需自行遍历行计算,是Pandas生态下的标准高效写法。
完整代码示例
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({ 'idx': [1,2,3,4,5,6], 'val': [10,32,21,55,43,31] }) # 计算滚动平均:窗口大小4,最少观测数1(不足4个时用现有所有值计算) df['avg_val'] = df['val'].rolling(window=4, min_periods=1).mean() # 输出指定列的结果 result = df[['idx', 'avg_val']] print(result)
参数说明
window=4:指定滚动窗口大小为4,每次计算取当前行及前面3行共4个值min_periods=1:指定窗口内只要有1个有效值就触发计算,刚好匹配前3行不足4个值时也能计算平均值的需求,不设置该参数时前3行计算结果会返回空值
输出结果验证
idx avg_val 0 1 10.00 1 2 21.00 2 3 21.00 3 4 29.50 4 5 37.75 5 6 37.50
内容的提问来源于stack exchange,提问作者Anirban Nag 'tintinmj'
相关产品推荐
相关产品推荐

