如何统计《幸存者》参赛次数最多选手(剔除同赛季重复记录)
统计《幸存者》参赛次数最多的选手(剔除同一赛季重复记录)
问题背景
需求是统计真人秀《幸存者》中参赛次数最多的选手,核心规则是同一赛季内的重复参赛记录仅计为1次。现有两个DataFrame:
castaways:包含赛季名称、赛季编号、castaway id、全名等字段castaway_details:包含castaway id、全名、性别等选手基础信息
当前使用的代码得到错误结果:
castaway_details[castaway_details['castaway id'] == castaways['castaway id'].value_counts().idxmax()]
选出的选手在castaways中出现6次,但其中3次属于同一赛季,不符合统计规则。
错误原因
原代码中的value_counts()直接统计了castaway id的总出现次数,没有区分同一赛季的重复记录——同一选手在同一赛季的多次条目都会被计入次数,导致统计结果虚高。
解决方案
核心思路是先对castaways按「选手ID+赛季」组合去重,确保每个选手每个赛季仅保留一条记录,再统计参赛次数:
去重同一赛季的重复记录
# 按castaway id和赛季字段去重,保留每个选手每个赛季的唯一记录 # 若你的赛季字段是"season name"而非"赛季",替换即可 unique_season_participations = castaways.drop_duplicates(subset=['castaway id', '赛季'])统计去重后的参赛次数
# 统计每个选手的参赛赛季数 participation_counts = unique_season_participations['castaway id'].value_counts()获取参赛次数最多的选手详情
# 找到参赛次数最多的选手ID top_castaway_id = participation_counts.idxmax() # 从castaway_details中获取该选手的完整信息 top_castaway = castaway_details[castaway_details['castaway id'] == top_castaway_id]整合为一行代码(可选)
top_castaway = castaway_details[ castaway_details['castaway id'] == castaways.drop_duplicates(subset=['castaway id', '赛季'])['castaway id'].value_counts().idxmax() ]
额外说明
如果需要查看该选手的具体参赛次数,可以直接输出:
print(f"最多参赛次数:{participation_counts.max()}")
内容的提问来源于stack exchange,提问作者Jaclyn Maraia
相关产品推荐
相关产品推荐

