如何在pandas透视表中比较数值,筛选金牌数>银牌数>铜牌数的运动员
问题解答
透视表合理性说明
你当前使用透视表的思路完全合理,该操作已经按运动员维度聚合统计了每个人获得的金、银、铜三类奖牌的数量,是实现需求的合适方案。
具体实现步骤
你只需要补充空值处理和条件过滤两步即可完成统计:
- 空值填充:没有获得过对应类别奖牌的运动员,在透视表中对应列会显示为缺失值
NaN,需要先填充为0,避免后续比较报错,同时可以统一转为整数类型:
# 填充空值并转为整数 newdf_athletes = newdf_athletes.fillna(0).astype(int)
- 条件过滤:直接对透视表的三列数据做布尔判断,筛选符合「金牌数>银牌数>铜牌数」的行:
# 构造过滤条件,注意列名需要和你数据中Medal字段的实际取值保持一致,如拼写、大小写等 filter_cond = (newdf_athletes['Gold'] > newdf_athletes['Silver']) & (newdf_athletes['Silver'] > newdf_athletes['Bronze']) # 统计符合条件的运动员数量 qualified_count = len(newdf_athletes[filter_cond]) print(qualified_count)
如果你的原数据中Medal字段的取值是中文的「金牌」「银牌」「铜牌」,把代码里的列名替换成对应中文即可。
内容的提问来源于stack exchange,提问作者aurala20
相关产品推荐
相关产品推荐

