有人可以帮助我从pandas文档中提供的示例中了解滚动功能和扩展功能之间的区别。
df = DataFrame({'B': [0, 1, 2, np.nan, 4]})
df
B
0 0.0
1 1.0
2 2.0
3 NaN
4 4.0
df.expanding(2).sum()
B
0 NaN # 0 + NaN
1 1.0 # 1 + 0
2 3.0 # 2 + 1
3 3.0 # ??
4 7.0 # ??
df.rolling(2).sum()
B
0 NaN # 0 + NaN
1 1.0 # 1 + 0
2 3.0 # 2 + 1
3 NaN # NaN + 2
4 NaN # 4 + NaN
我在每一行中都加注以表明我对计算的理解。 rolling
函数是否正确? expanding
呢?第三和第四行中的3和7来自哪里?
答案 0 :(得分:3)
expanding
中的2是min_periods
而不是window
df.expanding(min_periods=1).sum()
Out[117]:
B
0 0.0
1 1.0
2 3.0
3 3.0
4 7.0
如果您希望与rolling
相同的结果,window
将等于数据帧的长度
df.rolling(window=len(df),min_periods=1).sum()
Out[116]:
B
0 0.0
1 1.0
2 3.0
3 3.0
4 7.0