获取 pandas 系列中接下来的 5 到 10 个值的总和

Get sum of next 5 to 10 values in a pandas series

我想对每个元素的 pandas 系列或任何列表的接下来 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