我试图将值分配给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