【问题标题】:Cumulative sum with a reset [duplicate]带有重置的累积和[重复]
【发布时间】:2020-11-18 17:38:15
【问题描述】:

我想使用 pandas 的 cumsum 函数,并在满足条件时重置这个累积序列。例如我有这个 df :

       o  values
   0   1       4
   1   1       4
   2   2       2
   3   2       5
   4   3       1
   5   3      10

如果 'o' 的值为 +1,我想重置累积和。我知道我可以找到条件:

s = df['o'].diff() == 1

返回一个布尔序列,其中行 ['o'] 为 + 1。

我怎样才能继续得到以下结果:

       o  values  cum_sum
   0   1       4        4
   1   1       4        8
   2   2       2        2
   3   2       5        7
   4   3       1        1
   5   3      10       11

感谢您的帮助和时间!

【问题讨论】:

    标签: python pandas cumsum


    【解决方案1】:

    您可以使用pd.DataFrame.groupbycumsum()

    df['cumsum']=df.groupby('o').cumsum()
    

    输出:

    df
       o  values  cumsum
    0  1       4       4
    1  1       4       8
    2  2       2       2
    3  2       5       7
    4  3       1       1
    5  3      10      11
    

    【讨论】:

      【解决方案2】:

      使用:

      df['cum_sum'] = df.groupby('o').transform('cumsum')
      

      输出:

          o   values  cum_sum
      0   1   4       4
      1   1   4       8
      2   2   2       2
      3   2   5       7
      4   3   1       1
      5   3   10      11
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-16
        • 2018-05-02
        • 1970-01-01
        相关资源
        最近更新 更多