Pandas - 每个唯一 ID 的累计总和

Pandas - Cumulative sum for each unique id

我需要为每个唯一 id 求和,我的 df:

  id   date       num 
0 4124 01.03.2021 3607
1 2155 01.03.2021 3500
2 1258 01.03.2021 2000
3 1112 01.03.2021 5000
4 1258 01.03.2021 3200

结果:

  id   date       num  RESULT
0 4124 01.03.2021 3607 3607
1 2155 01.03.2021 3500 3500
2 1258 01.03.2021 2000 2000
3 1112 01.03.2021 5000 5000
4 1258 01.03.2021 3200 5200

像这样试过,但行不通

def grouper(x):
    d = x.rename('id').to_frame().reset_index()
    return d.groupby(pd.Grouper(key='id')).cumcount()


df['RESULT'] = df.groupby(['id']).transform(grouper)
df['RESULT'] = df['num'].groupby(df['id']).cumsum()

结果:

id date num RESULT
0 4124 01.03.2021 3607 3607
1 2155 01.03.2021 3500 3500
2 1258 01.03.2021 2000 2000
3 1112 01.03.2021 5000 5000
4 1258 01.03.2021 3200 5200

您可以为此使用 lambda 函数:

df['Result'] = df.apply(lambda row : sum(df[df.id == row['id']]['num']) , axis = 1)

输出:

      id    date        num    Result
0   4124    01.03.2021  3607    3607
1   2155    01.03.2021  3500    3500
2   1258    01.03.2021  2000    5200
3   1112    01.03.2021  5000    5000
4   1258    01.03.2021  3200    5200