【Pandas】pandas DataFrame drop_duplicates

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, …])用于删除重复行的方法

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: 删除所有重复项
inplacebool,默认 False是否在原对象上修改
ignore_indexbool,默认 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 可用于输出更整洁的索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liuweidong0802

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值