更新时间:2023-12-03 14:33:46
使用list comprehension
:
cols = ['lvl1','lvl2']
k = ['{}_avg'.format(x) for x in cols]
df = df.join(pd.concat([df.groupby(c)['wgt'].transform('mean') for c in cols], 1, keys=k))
print (df)
lvl1 lvl2 wgt lvl1_avg lvl2_avg
0 l1A l2A 0.20 0.25 0.216667
1 l1A l2A 0.30 0.25 0.216667
2 l1B l2A 0.15 0.15 0.216667
3 l1C l26 0.05 0.05 0.050000
4 l1D l27 0.30 0.30 0.300000