【Pandas】pandas DataFrame duplicated
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, …]) | 用于对齐两个 DataFrame 或 Series 的方法 |
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 bResult 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'
是默认行为,适合大多数去重需求;- 可用于筛选出重复的数据行进行进一步分析或处理。