获取 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
我想对每个元素的 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