【问题标题】:Get sum of next 5 to 10 values in a pandas series获取熊猫系列中接下来 5 到 10 个值的总和
【发布时间】:2021-07-01 20:59:18
【问题描述】:

我想总结下一个熊猫系列的下 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 的总和。 我并不真正关心最后的值,它们可以是 nan 或以 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)给出答案,那将很有帮助,但我自己也可以弄清楚。 请帮忙。

【问题讨论】:

  • 你如何计算``74, 57, 39, 20, ...''
  • 您是否希望将最后几行相加为 4、3、2、1 项?
  • 是的,74 是 17+18+19+20+0 的总和。同样,57 来自 18+19+20+0+0 以此类推。

标签: python pandas rolling-computation


【解决方案1】:

让我们试试吧:

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

【讨论】:

    猜你喜欢
    • 2018-04-24
    • 1970-01-01
    • 2018-05-14
    • 2018-11-08
    • 2017-07-03
    • 2013-05-02
    • 2022-01-24
    • 2017-11-03
    • 1970-01-01
    相关资源
    最近更新 更多