详解pandas使用drop_duplicates去除DataFrame重复项参数

陆景行
陆景行
发布时间:2026-10-13 | 3人浏览过
原创

本文深入解析pandas库中drop_duplicates函数的核心参数subset、keep和inplace。通过具体代码示例,演示如何指定列进行去重、控制保留策略以及原地修改数据。同时指出直接赋值副本可能引发的SettingWithCopyWarning警告,并提供最佳实践建议,帮助开发者高效处理DataFrame重复行问题。

pandas drop_duplicates概述

Pandas之drop_duplicates:去除重复项

方法

核心参数详解


DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)

参数

drop_duplicates函数主要用于处理DataFrame格式的数据,旨在移除特定列下的重复行,并返回处理后的DataFrame对象。

  • subset:指定列标签或标签序列(可选),用于确定参与去重检查的特定列,若未指定则默认检查所有列。
  • keep:取值可为‘first'、‘last'或False(默认‘first'),用于决定在删除重复项时保留哪一行的数据,默认保留首次出现的记录。
  • inplace:布尔值(默认False),指示是否直接在原始数据对象上进行修改,还是返回一个经过处理的新副本。

当DataFrame中存在完全重复的行,或者多行中某些指定列的值出现重复时,通常需要执行去重操作。具体示例如下:

去重实战示例


data.drop_duplicates(subset=['A','B'],keep='first',inplace=True)

代码中subset参数接收列名,表示仅针对这些指定列进行去重处理,即根据这些列对应值的相同性来合并行。若subset设为None(默认值),则考虑所有列进行比对。

当keep参数设为'first'时,表示保留第一次出现的重复行,这也是该参数的默认行为。此外,keep还有两个其他取值:'last'表示保留最后一次出现的重复行,而False则表示移除所有重复的行,不保留任何重复记录。

设置inplace=True意味着直接在当前的DataFrame实例上执行删除重复项的操作,不生成新对象;而默认值False则会生成并返回一个去重后的副本,原数据保持不变。

若将去重后的副本赋值给新的DataFrame变量,操作方式如下:

副本赋值与潜在警告


data=data.drop_duplicates(subset=None,keep='first',inplace=False)

这一行代码的功能与文章开头提到的直接修改原数据的效果在结果上是等效的。然而,如果随后尝试在该新创建的DataFrame上增加一列:


data['extra']=test_data['item_price_level']

程序可能会抛出如下错误提示:

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame.

因此,为了避免此类警告并确保数据操作的稳定性,建议在对DataFrame进行去重时,优先采用直接修改原数据的方式(即使用inplace=True或开头提到的代码风格)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表