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

Pandas DataFrame标记所有重复项(含首次实例)无NaN输出的实现方法

解决方案

Pandas的duplicated方法本身就支持标记全部重复项(包含首次出现的实例),只需要指定keep=False参数即可,一行代码就能实现需求,不会产生NaN值:

emp["duplname"] = emp.duplicated(subset=["Name"], keep=False)

参数说明

  • subset=["Name"]:指定仅按照Name列判断重复,如果你需要多列组合判断重复,在列表里加对应的列名即可
  • keep=False:所有重复出现的样本都会被标记为True,不管是不是首次出现

运行后得到的emp结果如下,完全符合你的预期:

Name  Age    City  duplname
0     Mohd   28      NY     False
1     Anne   32  London      True
2  Aaditya   25  Mumbai      True
3     Anne   32  London      True
4     Anne   32  London      True
5     Anne   32  Mumbai      True
6  Aaditya   40   Dubai      True
7     Link   32  London     False

你之前代码出现大量NaN的原因是:value_counts()返回的结果索引是dup_index的取值,直接给emp['counts']赋值时会按照DataFrame的行索引对齐,两者索引不匹配的行就会自动填充为NaN。

如果你需要同时统计每个姓名的出现次数,可以用groupby+transform实现,也不会产生NaN:

emp['counts'] = emp.groupby('Name')['Name'].transform('count')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 20:54:02