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

Pandas中df['id'].duplicated()与df[df.duplicated('id')]的区别

Pandas中两种重复判断写法的差异

二者核心差异在于返回的数据类型、包含的内容完全不同,打印输出不可能一致,具体区别如下:

  • df['id'].duplicated()
    是对单独取出的id列(Series类型)调用重复判断方法,返回值是和原id列等长的布尔型Series:每个位置的值为True/False,标记对应行的id是否为重复值(默认规则:同个id第一次出现时标记为False,后续重复出现的行标记为True)。打印时只会输出带行索引的布尔序列,不会展示原DataFrame的其他列数据。
  • df[df.duplicated('id')]
    是先对整个DataFrame调用重复判断方法、指定按id列识别重复,得到和原DataFrame等长的布尔Series后,再通过布尔索引做行筛选,最终返回值是所有被标记为重复的行组成的新DataFrame,会包含原表的所有列,打印出来是结构化的表格数据。

补充说明:两种写法默认的重复判断逻辑(keep='first')是完全一致的,但返回结果的形态天差地别:前者是用于筛选、标记的布尔掩码,后者是直接筛选完成的重复行数据集。

你可以用下面的测试代码直观看到二者输出的区别:

import pandas as pd
# 构造测试数据
df = pd.DataFrame({
    'id': [1, 2, 1, 3, 2],
    'content': ['行1', '行2', '行3', '行4', '行5']
})

print("=== df['id'].duplicated() 输出 ===")
print(df['id'].duplicated())

print("\n=== df[df.duplicated('id')] 输出 ===")
print(df[df.duplicated('id')])

运行后输出结果对比如下:

=== df['id'].duplicated() 输出 ===
0    False
1    False
2     True
3    False
4     True
Name: id, dtype: bool

=== df[df.duplicated('id')] 输出 ===
   id content
2   1      行3
4   2      行5

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:18:32