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