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, …]) | 用于删除重复行的方法 |
pandas.DataFrame.drop_duplicates()
pandas.DataFrame.drop_duplicates()
是一个用于删除重复行的方法,常用于数据清洗中去除重复的数据记录。你可以根据全部列或指定列来判断是否为重复行,并控制保留哪一行。
📌 方法签名
DataFrame.drop_duplicates(subset=None, *, keep='first', inplace=False, ignore_index=False)
🔧 参数说明:
参数 | 类型 | 说明 |
---|---|---|
subset | 标签或标签列表,可选 | 指定用于判断重复的列,默认为所有列 |
keep | {'first', 'last', False} | 控制保留哪一条重复记录: - 'first' : 保留第一次出现的(默认)- 'last' : 保留最后一次出现的- False : 删除所有重复项 |
inplace | bool ,默认 False | 是否在原对象上修改 |
ignore_index | bool ,默认 False | 如果为 True ,结果将重置索引(从 0 开始) |
✅ 返回值:
- 返回一个新的
DataFrame
,不包含重复行(除非inplace=True
)。
🧪 示例代码:
示例 1:基于所有列去重
import pandas as pd
# 创建含重复行的 DataFrame
df = pd.DataFrame({
'A': [1, 2, 2, 3],
'B': ['a', 'b', 'b', 'c']
})
print("Original DataFrame:")
print(df)
# 去除完全重复的行
df_unique = df.drop_duplicates()
print("\nAfter drop_duplicates():")
print(df_unique)
输出结果:
Original DataFrame:
A B
0 1 a
1 2 b
2 2 b
3 3 c
After drop_duplicates():
A B
0 1 a
1 2 b
3 3 c
示例 2:基于特定列去重(subset)
# 只根据列 'A' 判断重复
df_unique_by_A = df.drop_duplicates(subset=['A'])
print("\nAfter drop_duplicates(subset=['A']):")
print(df_unique_by_A)
输出结果:
After drop_duplicates(subset=['A']):
A B
0 1 a
1 2 b
3 3 c
示例 3:保留最后出现的重复项
# 保留最后一次出现的重复项
df_last = df.drop_duplicates(keep='last')
print("\nAfter drop_duplicates(keep='last'):")
print(df_last)
输出结果:
After drop_duplicates(keep='last'):
A B
0 1 a
3 3 c
2 2 b
示例 4:删除所有重复项
# 不保留任何重复项
df_no_dupes = df.drop_duplicates(keep=False)
print("\nAfter drop_duplicates(keep=False):")
print(df_no_dupes)
输出结果:
After drop_duplicates(keep=False):
A B
0 1 a
3 3 c
示例 5:忽略原始索引
# 重置索引
df_reset_index = df.drop_duplicates(ignore_index=True)
print("\nAfter drop_duplicates(ignore_index=True):")
print(df_reset_index)
输出结果:
After drop_duplicates(ignore_index=True):
A B
0 1 a
1 2 b
2 3 c
🧠 应用场景:
- 数据清洗中去除重复记录;
- 确保唯一性约束(如用户ID、订单号等);
- 预处理阶段避免模型训练时受到重复样本干扰;
⚠️ 注意事项:
- 默认不会修改原始
DataFrame
,除非设置inplace=True
; subset
可以是单个列名或多个列组成的列表;keep=False
会删除所有重复项,包括原始的那一行;ignore_index=True
可用于输出更整洁的索引。