2 回答
TA贡献1779条经验 获得超6个赞
通常我们应该使用transform,但由于transform不能接受像带有groupby对象的函数的列表,我们使用agg+reindex
df.groupby('idx').total.agg(['sum','mean']).reindex(df.idx).reset_index()
Out[64]:
idx sum mean
0 1 17 5.666667
1 1 17 5.666667
2 1 17 5.666667
3 2 75 25.000000
4 2 75 25.000000
5 2 75 25.000000
#df.groupby('idx').total.agg(['sum','mean']).reindex(df.idx).reset_index().assign(Todat=df.total.values)
TA贡献1868条经验 获得超4个赞
您可以使用groupby带有agg那么merge:
df.merge(df.groupby('idx')['total']
.agg(['sum','mean']),
left_on='idx',
right_index=True)
输出:
idx total sum mean
0 1 5 17 5.666667
1 1 10 17 5.666667
2 1 2 17 5.666667
3 2 10 75 25.000000
4 2 10 75 25.000000
5 2 55 75 25.000000
添加回答
举报