Pandas中标记与删除重复记录的完整指南

听雨眠
听雨眠
发布时间:2026-10-13 | 6人浏览过
原创

本文详解Pandas中处理重复记录的两种核心方法:duplicated用于标记重复行,drop_duplicates用于直接删除。通过解析subset、keep及inplace等关键参数,结合DataFrame与Series的具体代码示例,帮助开发者高效完成数据去重与清洗工作。

在Pandas库中,主要提供duplicated、Index.duplicated以及drop_duplicates这三个函数,用于对Series或DataFrame中的重复记录进行标记和删除操作。

duplicated函数的核心功能是判断Series中的值或DataFrame中的记录行是否存在重复。执行该函数后,若某条记录被判定为重复,则返回True;若为唯一值,则返回False。

针对DataFrame对象,其duplicated方法的签名定义为:pandas.DataFrame.duplicated(self, subset=None, keep='first')。

针对Series对象,其duplicated方法的签名定义为:pandas.Series.duplicated(self, keep='first')。

上述方法中涉及的关键参数含义如下:

subset参数用于指定用于识别重复的列标签,可以是一个列名或列名列表。若未指定该参数(默认为None),则系统将基于所有列的组合来判断重复。

keep参数控制哪些重复项被标记。当keep='first'(注意:原文误写为'frist',实际有效值为'first')时,除了第一次出现的记录外,其余所有相同的记录均被标记为重复。

当keep='last'时,除了最后一次出现的记录外,其余所有相同的记录均被标记为重复。

当keep=False时,所有相同的记录行都会被标记为重复。

import numpy as np
import pandas as pd 
#标记DataFrame重复例子
df = pd.DataFrame({'col1': ['one', 'one', 'two', 'two', 'two', 'three', 'four'], 'col2': [1, 2, 1, 2, 1, 1, 1],
   'col3':['AA','BB','CC','DD','EE','FF','GG']},index=['a', 'a', 'b', 'c', 'b', 'a','c'])
#duplicated(self, subset=None, keep='first')
#根据列名标记
#keep='first'
df.duplicated()#默认所有列,无重复记录
df.duplicated('col1')#第二、四、五行被标记为重复
df.duplicated(['col1','col2'])#第五行被标记为重复
#keep='last'
df.duplicated('col1','last')#第一、三、四行被标记重复
df.duplicated(['col1','col2'],keep='last')#第三行被标记为重复
#keep=False
df.duplicated('col1',False)#Series([True,True,True,True,True,False,False],index=['a','a','b','c','b','a','c'])
df.duplicated(['col1','col2'],keep=False)#在col1和col2列上出现相同的,都被标记为重复
type(df.duplicated(['col1','col2'],keep=False))#pandas.core.series.Series
#根据索引标记
df.index.duplicated()#默认keep='first',第二、五、七行被标记为重复
df.index.duplicated(keep='last')#第一、二、三、四被标记为重复
df[df.index.duplicated()]#获取重复记录行
df[~df.index.duplicated('last')]#获取不重复记录行
#标记Series重复例子
#duplicated(self, keep='first')
s = pd.Series(['one', 'one', 'two', 'two', 'two', 'three', 'four'] ,index= ['a', 'a', 'b', 'c', 'b', 'a','c'],name='sname')
s.duplicated()
s.duplicated('last')
s.duplicated(False)
#根据索引标记
s.index.duplicated()
s.index.duplicated('last')
s.index.duplicated(False)

drop_duplicates函数则用于直接删除Series或DataFrame中的重复记录,并返回去重后的新对象。

针对DataFrame对象,其drop_duplicates方法的签名定义为:pandas.DataFrame.drop_duplicates(self, subset=None, keep='first', inplace=False)。

针对Series对象,其drop_duplicates方法的签名定义为:pandas.Series.drop_duplicates(self, keep='first', inplace=False)。

#删除DataFrame重复记录例子 
#drop_duplicates(self, subset=None, keep='first', inplace=False) 
df.drop_duplicates() 
df.drop_duplicates('col1')#删除了df.duplicated('col1')标记的重复记录 
df.drop_duplicates('col1','last')#删除了df.duplicated('col1','last')标记的重复记录 
df1.drop_duplicates(['col1','col2'])#删除了df.duplicated(['col1','col2'])标记的重复记录 
df.drop_duplicates('col1',keep='last',inplace=True)#inplace=True表示在原DataFrame上执行删除操作 
df.drop_duplicates('col1',keep='last',inplace=False)#inplace=False返回一个副本 
#删除Series重复记录例子 
#drop_duplicates(self, keep='first', inplace=False) 
s.drop_duplicates() 

以上内容即为Pandas中标记及删除重复记录的完整方法介绍,旨在为读者提供实用的参考。如有更多技术需求,欢迎持续关注与支持。

相关标签:

本站声明

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

Python 相关产品和应用

全部下载

专题列表