获取熊猫系列中接下来5到10个值的总和
我想总结熊猫系列或每个元素的任何列表的下 5 个到下一个 10 个值的值。例如:
x = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
output = [40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 74, 57, 39, 20, 0, 0 ,0 ,0 ,0]
40 是 6、7、8、9、10 的总和。我并不真正关心最后一个值,它们可以是 nans 或后缀为 0 的可用值的总和。
我知道滚动功能并尝试过:
pd.Series(x).shift(-10).rolling(10, min_periods =1 ).sum()-pd.Series(x).shift(-5).rolling(5, min_periods =1 ).sum()
但它给出了错误的值。如果可以根据变量给出答案(5 和 10 用 x,y 替换)会很有帮助,但我自己也可以弄清楚。请帮忙。
回答
咱们试试吧:
n,m = 5,10
(pd.Series(x).shift(-n, fill_value=0)
.rolling(n).sum()
.shift(n-m+1)
)
输出:
0 40.0
1 45.0
2 50.0
3 55.0
4 60.0
5 65.0
6 70.0
7 75.0
8 80.0
9 85.0
10 90.0
11 74.0
12 57.0
13 39.0
14 20.0
15 0.0
16 NaN
17 NaN
18 NaN
19 NaN
dtype: float64