Pandas数据帧添加每个id的总和

2024-05-14 21:14:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个这样的测向仪:

idx total
1   5
1   10
1   2
2   10
2   10
2   55

并希望创建另一列,对每个id的总计和平均值进行计算,以得到:

^{pr2}$

Tags: id平均值total总计idxpr2
2条回答

您可以将groupbyagg一起使用,然后merge

df.merge(df.groupby('idx')['total']
           .agg(['sum','mean']), 
         left_on='idx', 
         right_index=True)

输出:

^{pr2}$

通常我们应该使用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)

相关问题 更多 >

    热门问题