Pandas - 每个唯一 id 的累积总和

时间:2021-03-02 18:39:13

标签: python pandas cumsum

我需要为每个唯一的 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)

2 个答案:

答案 0 :(得分:2)

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

结果:

<头>
id 日期 num 结果
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

答案 1 :(得分:1)

您可以为此使用 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
相关问题