【问题标题】:Cumulative sum in Python without the current row没有当前行的Python中的累积和
【发布时间】:2021-03-23 05:05:14
【问题描述】:

我需要在不计算当前行的情况下找到前 3 行的累积和,这里是一个简短的示例:

ID SUM
A 10
B 5
B 4
B 1
B 2
C 1
C 3

这就是我想要达到的结果:

ID SUM
A 0
B 0
B 5
B 9
B 10
C 0
C 3

【问题讨论】:

    标签: python pandas dataframe rolling-computation


    【解决方案1】:

    groupby.applyshiftrolling 一起使用

    df['SUM'] = df.groupby('ID')['SUM'].apply(lambda x: x.shift(fill_value=0)
                                                         .rolling(3,min_periods=1).sum())
    
    Out[50]:
      ID   SUM
    0  A   0.0
    1  B   0.0
    2  B   5.0
    3  B   9.0
    4  B  10.0
    5  C   0.0
    6  C   1.0
    

    【讨论】:

    • 非常感谢!!这对我有用:)
    【解决方案2】:

    你可以试试:

    df['SUM'] = (df.groupby('ID')['SUM']
                   .transform(lambda x: x.rolling(4,min_periods=1).sum())
                   .sub(df['SUM'])
                )
    

    输出:

      ID  SUM
    0  A    0
    1  B    0
    2  B    5
    3  B    9
    4  B   10
    5  C    0
    6  C    1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-04
      • 1970-01-01
      • 2020-06-27
      • 2013-10-29
      • 1970-01-01
      • 2017-08-16
      • 1970-01-01
      相关资源
      最近更新 更多