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

使用pandas duplicated()筛选多次诺奖获奖者时遗漏重复行问题

多次诺贝尔奖获奖者筛选实现方案

问题根因

pandas的duplicated()方法的原生逻辑为:仅标记重复条目中,除keep参数指定保留项之外的行。因此无论设置keep='first'还是keep='last',都会漏掉1条重复记录,这是方法设计特性,并非代码逻辑错误。
你此前三次测试输出结果一致,是因为当单个姓名仅重复2次时,keep='first'会标记第2次出现的行,keep='last'会标记第1次出现的行,你取出的比对样本刚好是对应的重复条目,所以布尔校验返回True,但此时筛选结果始终少了1条对应的重复记录。

正确实现方案

方案1:直接配置keep=False参数

将keep参数设为False后,所有存在重复的行(包括首次、末次出现的行)都会被标记为True,直接筛选即可得到所有获奖次数≥2的获奖者的全部记录:

lucky_winners = df[df.duplicated(['full_name'], keep=False)]

方案2:分组计数后筛选(扩展性更强)

如果需要统计获奖者的获奖次数、或做多维度过滤,可以先对姓名列分组计数,再反向筛选原表:

# 统计每个姓名的获奖次数
winner_count = df['full_name'].value_counts()
# 筛选出获奖次数≥2的姓名列表
multiple_winner_names = winner_count[winner_count >= 2].index
# 匹配原表所有符合条件的记录
lucky_winners = df[df['full_name'].isin(multiple_winner_names)]

该方案支持后续扩展按获奖次数排序、按获奖类别筛选等需求,适用场景更广。

内容的提问来源于stack exchange,提问作者ARHAM RUMI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 03:54:02