Python DataFrame统计各国参与的不同奥运体育项目数量方法
奥运项目统计解决方案
核心逻辑是按国家分组后,对项目字段做去重计数,以下是pandas环境下的实现方法:
- 最简实现(一行代码完成统计)
假设你的原始DataFrame名为olympic_df,直接运行以下代码即可:
result = olympic_df.groupby('country')['sport'].nunique().reset_index(name='distinct_sport_count')
参数说明:
groupby('country'):按国家字段聚合所有同国家的记录['sport'].nunique():对每个国家分组内的项目字段计算去重后的数量,自动过滤同国家重复上报的同项目记录reset_index(name='distinct_sport_count'):将分组统计后的结果转换为标准DataFrame格式,同时将统计列重命名为可自定义的名称- 先去重再统计(适合需要留存去重后明细的场景)
先对国家、项目两列做全局去重,再按国家统计行数即可,结果和第一种方法完全一致:
# 先拿到国家+项目的去重明细 distinct_country_sport = olympic_df[['country', 'sport']].drop_duplicates() # 统计每个国家的项目数 result = distinct_country_sport.groupby('country').size().reset_index(name='distinct_sport_count')
如果需要排除国家字段为空的无效记录,可以在分组前增加空值过滤逻辑:olympic_df.dropna(subset=['country']).groupby('country')['sport'].nunique().reset_index(name='distinct_sport_count')
内容的提问来源于stack exchange,提问作者JDAR
相关产品推荐
相关产品推荐

