Pandas官方的滑动窗口文档请参考:https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.rolling.html
解决方法
添加参数:min_periods
,用于指定,当前窗口最少有多少个数才开始计算
series.rolling(window=5, min_periods=2).mean()
示例:
import pandas as pd
dataframe = pd.DataFrame([1, 2, 3, None, 4, 5, 6])
dataframe['roll'] = dataframe.rolling(window=3, min_periods=1).mean()
print(dataframe)
得到结果:
0 roll
0 1.0 1.0
1 2.0 1.5
2 3.0 2.0
3 NaN 2.5
4 4.0 3.5
5 5.0 4.5
6 6.0 5.0
问题解析
官方文档中这个参数的解释如下:
可以看到默认值是窗口大小,因此当数据中存在缺失项时会跳过这个窗口,导致结果也是None