熊猫滚动功能与移动索引



代码

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

最新更新