代码
s = pd.Series([0,1,2,3,4])
sr = s.rolling(3)
sr.apply(np.sum)
返回索引为 [0,1,2,3,4] 和值 [NaN, NaN, 3, 6, 9] 的序列。是否有一个快速的技巧,特别是使用 pandas 滚动函数,以便它从以下3 个索引返回滚动总和,即序列值为 [3, 6, 9, NaN, NaN]?
唯一的区别是偏移 -2:
w = 3
s.rolling(w).sum().shift(-w + 1)
0 3.0
1 6.0
2 9.0
3 NaN
4 NaN
dtype: float64
你需要numpy.roll((
s = pd.Series([0,1,2,3,4])
sr = s.rolling(3)
pd.Series(np.roll(sr.apply(np.sum),3))
输出:
0 3.0
1 6.0
2 9.0
3 NaN
4 NaN
dtype: float64
添加iloc[::-1]
s = pd.Series([0,1,2,3,4])
sr = s.iloc[::-1].rolling(3)
sr.sum().iloc[::-1]
0 3.0
1 6.0
2 9.0
3 NaN
4 NaN
dtype: float64