2 回答

TA贡献1809条经验 获得超8个赞
我认为您可以使用transformaftergroupby来获取mean与每一行的相关信息,然后pd.concat是数据帧,例如:
new_df = pd.concat([(df.groupby('id')[features]
.transform(np.mean).add_suffix('_mean')), df],
axis=1)
print (new_df)
A_mean B_mean id A B
0 2.0 3.666667 0 1 2
1 2.0 3.666667 0 1 3
2 2.0 3.666667 0 4 6
3 3.5 3.000000 1 3 4
4 3.5 3.000000 1 4 2

TA贡献1821条经验 获得超6个赞
您可以使用以下命令合并和重新排序列sorted():
v = pd.merge(df, meanData, suffixes=["", "_mean"], how='left', on=['id'])
v[sorted(v.columns, key=lambda x: 'mean' not in x)]
A_mean B_mean id A B
0 2.0 3.666667 0 1 2
1 2.0 3.666667 0 1 3
2 2.0 3.666667 0 4 6
3 3.5 3.000000 1 3 4
4 3.5 3.000000 1 4 2
添加回答
举报