我有以下内容df
,
id amount
1 20
2 8
1 3
1 2
2 7
我想groupby
的df
通过id
,并通过它们的大小进行排序的群体,
df.groupby('id').size().sort_values(ascending=False)
而且还要汇总amount
每个组以同时创建一个单独的列total
,
id amount total size
1 20 25 3
1 3 25 3
1 2 25 3
2 8 15 2
2 7 15 2
您可以将GroupBy
+agg
与列表一起使用,后跟pd.merge
:
g = df.groupby('id')['amount'].agg(['size', 'sum'])
res = pd.merge(df, g, left_on='id', right_index=True)\
.sort_values('size', ascending=False)
print(res)
id amount size sum
0 1 20 3 25
2 1 3 3 25
3 1 2 3 25
1 2 8 2 15
4 2 7 2 15
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句