【问题标题】:Pandas groupby sum difference shift cumulative sum [duplicate]Pandas groupby总和差异移位累积总和[重复]
【发布时间】:2020-09-26 04:09:40
【问题描述】:

我有一张类似的桌子

import pandas as pd
data =  [['2019-02-01',0 ,5],
 ['2019-02-01',1, 12],
 ['2019-02-01',2,18],
 ['2019-02-01' ,3, 23],
 ['2019-02-01' ,4 ,20],
 ['2019-03-01',0 ,12],
 ['2019-03-01', 1,7],
 ['2019-03-01' ,2, 6],
 ['2019-03-01' ,3, 5],
 ['2019-03-01' ,4, 8]]
 df = pd.DataFrame(data, columns = ['Start_Month', 'Bucket','Complete']) 

我想要一个新列,其中每个 start_Month 它将计算完成的移位值的总和差异。就像第一个值将是 Complete groupby start_Month 的总和,例如 2019-02-01 是 78,而下一个即存储桶 1 将是 78-5=8=73(5 是存储桶 0 的完整值)和存储桶2 对于相同的 start_month 将是 78-5-12=61,如下图所示,但在显示计算的图片中。

df['new_Com']=df.groupby(['Start_Month']).Complete.sum() - df.groupby(['Start_Month']).Complete.shift(1).cumsum().fillna(0).astype(int) 

这不起作用。

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    尝试颠倒顺序和cumsum

    df['New'] = df.iloc[::-1].groupby('Start_Month').Complete.cumsum()
    df
      Start_Month  Bucket  Complete  New
    0  2019-02-01       0         5   78
    1  2019-02-01       1        12   73
    2  2019-02-01       2        18   61
    3  2019-02-01       3        23   43
    4  2019-02-01       4        20   20
    5  2019-03-01       0        12   38
    6  2019-03-01       1         7   26
    7  2019-03-01       2         6   19
    8  2019-03-01       3         5   13
    9  2019-03-01       4         8    8
    

    【讨论】:

      猜你喜欢
      • 2020-03-04
      • 2014-05-04
      • 2020-06-27
      • 2019-02-15
      • 2022-01-17
      • 1970-01-01
      • 2020-08-04
      相关资源
      最近更新 更多