You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计《幸存者》参赛次数最多选手(剔除同赛季重复记录)

统计《幸存者》参赛次数最多的选手(剔除同一赛季重复记录)

问题背景

需求是统计真人秀《幸存者》中参赛次数最多的选手,核心规则是同一赛季内的重复参赛记录仅计为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+赛季」组合去重,确保每个选手每个赛季仅保留一条记录,再统计参赛次数:

  1. 去重同一赛季的重复记录

    # 按castaway id和赛季字段去重,保留每个选手每个赛季的唯一记录
    # 若你的赛季字段是"season name"而非"赛季",替换即可
    unique_season_participations = castaways.drop_duplicates(subset=['castaway id', '赛季'])
    
  2. 统计去重后的参赛次数

    # 统计每个选手的参赛赛季数
    participation_counts = unique_season_participations['castaway id'].value_counts()
    
  3. 获取参赛次数最多的选手详情

    # 找到参赛次数最多的选手ID
    top_castaway_id = participation_counts.idxmax()
    # 从castaway_details中获取该选手的完整信息
    top_castaway = castaway_details[castaway_details['castaway id'] == top_castaway_id]
    
  4. 整合为一行代码(可选)

    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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 10:32:14