Pandas DataFrame 添加每个 id 的总和

我有一个这样的 df:


idx total

1   5

1   10

1   2

2   10

2   10

2   55

并想创建另一列,对每个 id 的总数求和和求平均值以得到这个:


idx total sum   avg

1   5     17    5.66

1   10    17    5.66

1   2     17    5.66

2   10    75    25

2   10    75    25

2   55    75    25


汪汪一只猫
浏览 143回答 2
2回答

哆啦的时光机

通常我们应该使用transform,但由于transform不能接受像带有groupby对象的函数的列表,我们使用agg+reindexdf.groupby('idx').total.agg(['sum','mean']).reindex(df.idx).reset_index()Out[64]:    idx  sum       mean0    1   17   5.6666671    1   17   5.6666672    1   17   5.6666673    2   75  25.0000004    2   75  25.0000005    2   75  25.000000#df.groupby('idx').total.agg(['sum','mean']).reindex(df.idx).reset_index().assign(Todat=df.total.values)

MYYA

您可以使用groupby带有agg那么merge:df.merge(df.groupby('idx')['total']           .agg(['sum','mean']),          left_on='idx',          right_index=True)输出:   idx  total  sum       mean0    1      5   17   5.6666671    1     10   17   5.6666672    1      2   17   5.6666673    2     10   75  25.0000004    2     10   75  25.0000005    2     55   75  25.000000
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python