我有以下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
关于python - Pandas 如何在分组的同时在另一列上进行分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51786299/