Pandas数据去重:drop_duplicates函数详解

时间:2024-10-18 22:26:03

DataFrame.drop_duplicates(subset=Nonekeep='first'inplace=False)


参数解释:

  • subset: 列名,默认所有的列
  • keep: 是否保留{‘first’, ‘last’, False}keep= 'first' 表示去重时每组重复数据保留第一条数据,其余数据丢弃; keep='last' 表示去重时每组重复数据保留最后一条数据,其余数据丢弃;keep=False 表示去重时每组重复数据全部丢弃,不保留
  • inplace: 是否替换{False, True}inplace=False表示去重之后不覆盖原表格数据,inplace=True表示去重之后原表格数据被覆盖

一、仅去除重复项

下面给出部分代码示例,可自行粘贴运行对比,推荐spyder / jupyter notebook, 方便查看数据结构。

# A列中1重复两次(index=0/2)
In [6]: data  
Out[6]: 
   A  B  C
0  1  1  1
1  2  2  2
2  1  3  3
3  3  4  4

# A列去重,两条重复数据保留第一条(index=0),第二条数据丢弃(index=2)。
In [7]: data.drop_duplicates(subset='A',keep='first',inplace=False)
Out[7]: 
   A  B  C
0  1  1  1
1  2  2  2
3  3  4  4

# A列去重,两条重复数据保留最后一条(index=2),第一条数据丢弃(index=0)。
In [7]: data.drop_duplicates(subset='A',keep='first',inplace=False)
Out[7]: 
   A  B  C
1  2  2  2
2  1  3  3
3  3  4  4

二、提取重复项

提取重复项?两次去除重复项即可,思路如下。

#第一步: 去重,将重复数据丢弃
In [10]: data1=data.drop_duplicates(subset='A',keep=False,inplace=False)

#第二步:去重,保留一组重复数据
In [11]: data2=data.drop_duplicates(subset='A',keep='first',inplace=False)

#第三步:将data1与data2合并后去重且丢弃重复数据
#(data1与data2合并后, 此时原表里面非重复数据变成了两份,去重丢弃这些重复数据之后,剩下的数据即为所求)
In [12]:(data2).drop_duplicates(subset='A',keep=False,inplace=False)
Out[12]: 
   A  B  C
0  1  1  1