python - 如何在 Pandas 中使用 groupby 划分 2 个聚合列?
问题描述
在泰坦尼克号数据集中,我希望计算每个乘客类别(Pclass)1,2 和 3 中幸存的乘客百分比。我想出了如何获得乘客数量和数量。使用 group by 幸存的乘客如下:
train[['PassengerId','Pclass','Survived']]\
.groupby('Pclass')\
.agg(PassengerCount=pd.NamedAgg(column='PassengerId', aggfunc='count'),
SurvivedPassengerCount=pd.NamedAgg(column='Survived',aggfunc='sum'))
所以,我得到以下输出:
PassengerCount SurvivedPassengerCount
Pclass
1 216 136
2 184 87
3 491 119
但是我如何获得百分比列?我想要输出如下:
PassengerCount SurvivedPassengerCount PercSurvived
Pclass
1 216 136 62.9%
2 184 87 47.3%
3 491 119 24.2%
提前致谢!
解决方案
由于您只需要除以SurvivedPassengerCount
,PassengerCount
因此您可以使用以下.assign
方法执行此操作:
result = train[['PassengerId','Pclass','Survived']]\
.groupby('Pclass')\
.agg(PassengerCount=pd.NamedAgg(column='PassengerId', aggfunc='count'),
SurvivedPassengerCount=pd.NamedAgg(column='Survived',aggfunc='sum'))\
result = result.assign(PercSurvived=df['PassengerCount']/df['SurvivedPassengerCount'])
推荐阅读
- ios - scrollToItem 在我的 CollectionView 中不起作用?
- javascript - Facebook Instant Games - 移动设备上的错误分辨率 (JS/HTML5)
- python - 未能在张量流中运行分布式初始
- python - 无法在我的应用中登录
- css - 当容器从 1000px 缩小到 600px 时,如何使用 CSS 将 div 的宽度从容器的 80% 平滑更改为容器的 100%?
- android - 为 Cocos Creator 游戏集成 3rd 方应用
- node.js - Grunt 变量作为文件名和文件路径
- here-api - HERE 地图中的路线标记,RouteBoxer 端口
- angular - 为什么我的代码在 subscribe(observables) 之后没有执行?
- opengl-es - 如何在顶点着色器中使用两个或多个属性?OpenGL ES2.0