【问题标题】:Pandas groupby cumulative sum ignore current rowPandas groupby 累积总和忽略当前行
【发布时间】:2020-06-27 17:58:51
【问题描述】:

我知道有一些关于这个主题的问题(比如Pandas: Cumulative sum of one column based on value of another),但是没有一个能完全满足我的要求。

假设我有一个像这样的数据框

.

我想按月计算 Cost 分组的累积总和,避免考虑当前值,以获得 Desired 列。通过使用 groupbycumsum 获得colum CumSum

.

生成数据帧的 DDL 是

df = pd.DataFrame({'Month': [1,1,1,2,2,1,3],
                   'Cost': [5,8,10,1,3,4,1]})

【问题讨论】:

    标签: python pandas dataframe


    【解决方案1】:

    您可以执行以下操作:

    df['agg']=df.groupby('Month')['Cost'].shift().fillna(0)
    df['Cumsum']=df['Cost']+df['agg']
    

    【讨论】:

      【解决方案2】:

      IIUC 你可以使用groupby.cumsum 然后减去cost;

      df['cumsum_'] = df.groupby('Month').Cost.cumsum().sub(df.Cost)
      
      print(df)
      
          Month  Cost  cumsum_
      0      1     5        0
      1      1     8        5
      2      1    10       13
      3      2     1        0
      4      2     3        1
      5      1     4       23
      6      3     1        0
      

      【讨论】:

        猜你喜欢
        • 2020-03-04
        • 1970-01-01
        • 2014-05-04
        • 2019-11-09
        • 2018-02-28
        • 2019-02-15
        • 2020-08-04
        相关资源
        最近更新 更多