Pandas:如何在groupby之后将值分配给组的第一行



我试图将值分配给groupby之后的组的第一行?

输入:

ID编号
Aa 100
Bb 200
Cc 300
Bs 400
Aa 500

输出:

ID Num Sum
Aa 100 600
Aa 500
Bb 200 600
Bb 400
抄送300 300

代码:

base_df['Sum'] = base_df.groupby(['ID'])['Num'].transform('sum')

但是,此代码会将值"Sum"分配给组中的每一行

我的输出:

ID Num Sum
Aa 100 600
Aa 500 600
Bb 200 600
Bb 400600
Cc 300 300

您可以使用duplicated:进行分配

s = df.groupby(['ID'])['Num'].transform('sum')
df.loc[~df.duplicated("ID"), "Sum"] = s
print (df)
ID  Num    Sum
0  Aa  100  600.0
1  Bb  200  600.0
2  Cc  300  300.0
3  Bb  400    NaN
4  Aa  500    NaN

最新更新