如何用groupby统计各运动项目奖牌总数并找出奖牌最多项目?
统计各运动项目奖牌总数并找出最多的项目
假设你用Pandas处理数据,以下是直接的解决方案:
步骤1:统计每个运动项目的总奖牌数
不需要按金/银/铜分类分组,直接按运动项目列分组后统计行数即可(每一行对应一枚奖牌记录):
# 假设你的DataFrame名为 medals_df,运动项目列是'Sport' total_medals = medals_df.groupby('Sport').size().reset_index(name='Total_Medals')
如果数据里存在无奖牌的记录(比如Medal列有空值),先过滤掉再统计更准确:
total_medals = medals_df[medals_df['Medal'].notna()].groupby('Sport').size().reset_index(name='Total_Medals')
步骤2:找出奖牌总数最多的项目
对统计结果按总奖牌数降序排序,取第一行就是目标项目:
top_sport = total_medals.sort_values(by='Total_Medals', ascending=False).iloc[0] print(f"奖牌最多的项目:{top_sport['Sport']},总计{top_sport['Total_Medals']}枚")
补充说明
你之前的分组应该是同时按Sport和Medal字段分组(比如groupby(['Sport', 'Medal'])),所以会按金银铜拆分统计。现在只保留Sport作为分组键,用size()直接统计每组的总记录数,就能得到该项目的奖牌总数。
内容的提问来源于stack exchange,提问作者Gabo Arosemena
相关产品推荐
相关产品推荐

