【Pandas】pandas DataFrame duplicated

Source

Pandas2.2 DataFrame

Reindexing selection label manipulation

方法 描述
DataFrame.add_prefix(prefix[, axis]) 用于在 DataFrame 的行标签或列标签前添加指定前缀的方法
DataFrame.add_suffix(suffix[, axis]) 用于在 DataFrame 的行标签或列标签后添加指定后缀的方法
DataFrame.align(other[, join, axis, level, …]) 用于对齐两个 DataFrameSeries 的方法
DataFrame.at_time(time[, asof, axis]) 用于筛选 特定时间点 的行的方法
DataFrame.between_time(start_time, end_time) 用于筛选 指定时间范围内的数据行 的方法
DataFrame.drop([labels, axis, index, …]) 用于从 DataFrame 中删除指定行或列的方法
DataFrame.drop_duplicates([subset, keep, …]) 用于删除重复行的方法
DataFrame.duplicated([subset, keep]) 用于检测 重复行 的方法

pandas.DataFrame.duplicated()

pandas.DataFrame.duplicated([subset, keep]) 是一个用于检测 重复行 的方法,它返回一个布尔型的 Series,标记每一行是否为重复行(True 表示是重复项)。


📌 方法签名
DataFrame.duplicated(subset=None, keep='first')

🔧 参数说明:
参数 类型 说明
subset 标签或标签列表,可选 指定用于判断重复的列,默认为所有列
keep {'first', 'last', False} 控制如何标记重复项:
- 'first': 第一次出现的不标记为重复(默认)
- 'last': 最后一次出现的不标记为重复
- False: 所有重复项都标记为 True

✅ 返回值:
  • 返回一个 pandas.Series,类型为布尔值,True 表示该行为重复行。

🧪 示例代码:
示例 1:基于所有列检测重复行
import pandas as pd

# 创建含重复行的 DataFrame
df = pd.DataFrame({
    
      
    'A': [1, 2, 2, 3, 2],
    'B': ['a', 'b', 'b', 'c', 'b']
})

print("Original DataFrame:")
print(df)

# 检测重复行(默认 keep='first')
duplicates = df.duplicated()

print("\nResult of df.duplicated():")
print(duplicates)
输出结果:
Original DataFrame:
   A  B
0  1  a
1  2  b
2  2  b
3  3  c
4  2  b

Result of df.duplicated():
0    False
1    False
2     True
3    False
4     True
dtype: bool

示例 2:基于特定列检测重复行(subset)
# 只根据列 'A' 判断重复
duplicates_by_A = df.duplicated(subset=['A'])

print("\nResult of df.duplicated(subset=['A']):")
print(duplicates_by_A)
输出结果:
Result of df.duplicated(subset=['A']):
0    False
1    False
2     True
3    False
4     True
dtype: bool

示例 3:保留最后出现的非重复项(keep=‘last’)
# 最后一次出现的不标记为重复
duplicates_last = df.duplicated(keep='last')

print("\nResult of df.duplicated(keep='last'):")
print(duplicates_last)
输出结果:
Result of df.duplicated(keep='last'):
0     True
1     True
2     True
3    False
4    False
dtype: bool

示例 4:标记所有重复项(keep=False)
# 所有重复项都标记为 True
all_duplicates = df.duplicated(keep=False)

print("\nResult of df.duplicated(keep=False):")
print(all_duplicates)
输出结果:
Result of df.duplicated(keep=False):
0    False
1     True
2     True
3    False
4     True
dtype: bool

🧠 应用场景:
  • 数据清洗时识别重复记录;
  • 配合 drop_duplicates() 使用,先查看哪些行是重复的;
  • 分析数据集中某些字段组合是否唯一;
  • 在数据分析前确保数据质量。

⚠️ 注意事项:
  • 不会修改原始 DataFrame,而是返回布尔 Series
  • subset 可以是单个列名或多个列组成的列表;
  • keep='first' 是默认行为,适合大多数去重需求;
  • 可用于筛选出重复的数据行进行进一步分析或处理。