python - 熊猫如何在聚合另一列时按组大小对groupby进行排序
问题描述
我有以下df
,
id amount
1 20
2 8
1 3
1 2
2 7
我想要by ,并按组的大小对组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
推荐阅读
- image - 是否可以使用相同的图像更改带有淡入淡出动画的图像?(斯威夫特用户界面)
- ruby-on-rails - Rails:NameError(未初始化的常量 UserSerializer)
- php - 如何更新codeigniter中的数据数组?
- html - 烧烤 html 和 CSS
- javascript - 我的画布绘图应用程序无法在移动设备上运行
- java - Python 属性错误“地图”对象没有属性“单元格”
- yolo - 在暗网上训练时没有出现地图/图表?
- drake - 离散多体植物的直接转录方法?
- javascript - 首次加载后保持动态标题不变
- swift - 使用蒙版时出现奇怪的阴影错误