为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas DataFrame 添加每个 id 的总和

Pandas DataFrame 添加每个 id 的总和

汪汪一只猫 2021-06-14 17:18:48
我有一个这样的 df:idx total1   51   101   22   102   102   55并想创建另一列,对每个 id 的总数求和和求平均值以得到这个:idx total sum   avg1   5     17    5.661   10    17    5.661   2     17    5.662   10    75    252   10    75    252   55    75    25
查看完整描述

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)



查看完整回答
反对 回复 2021-06-22
?
MYYA

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


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 142 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信