在处理数据的时候,我们经常会遇到处理重复数据的情况。根据需求一般有两种情况,下面我们分别针对两种情况举?:
第一种情况,去掉重复的数据:
### 构造数据
data = pd.DataFrame(data=[['a',1],['a',2],['b',1],['b',2],['a',1]],columns=['label','num'])
data
Out[17]:
label num
0 a 1
1 a 2
2 b 1
3 b 2
4 a 1
Dataframe已经有相关的函数来处理这个问题,就是drop_duplicates()函数。我们看到下面已经把重复的(’a',1)已经删除了。具体的参数大家可以点击链接,参考官方文档。总共只有三个参数。
data.drop_duplicates()
Out[18]:
label num
0 a 1
1 a 2
2 b 1
3 b 2
我们也可以利用subset参数指定去除某一列的重复值。
data.drop_duplicates(subset='label')
Out[20]:
label num
0 a 1
2 b 1
第二种情况,从数据中提取重复的数据:
DataFrame也提供了相关的函数来处理这个问题,就是duplicated()函数。我们可以看到duplicated函数返回的是布尔类型,重复出现就返回True。该函数只有两个参数,大家可以参考官方文档。
data.duplicated()
Out[40]:
0 False
1 False
2 False
3 False
4 True
dtype: bool
因为keep参数默认为First,就是除了第一次出现的数据,其他重复的数据都标记为True;如果我们想要获取所有重复的数据,可以将keep的值赋值为False。如下所示,就可以提取出所有重复的数据。
data.duplicated(keep=False)
Out[41]:
0 True
1 False
2 False
3 False
4 True
dtype: bool
因为duplicated函数返回的是布尔类型,所以要想得到具体的数据可以做如下操作:
data[data.duplicated(keep=False)]
Out[42]:
label num
0 a 1
4 a 1