数据转换—删除重复数据

DataFrame中会出现重复行:
1、DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行
2、drop_duplicates方法,用于返回一个移除了重复行的DataFrame
data=DataFrame({'k1':['one']*3+['two']*4,
'k2':[1,1,2,3,3,4,4]})

data
Out[5]: 
    k1  k2
0  one   1
1  one   1
2  one   2
3  two   3
4  two   3
5  two   4
6  two   4

#使用duplicated方法
data.duplicated()
Out[6]: 
0    False
1     True
2    False
3    False
4     True
5    False
6     True
dtype: bool

#使用drop_duplicates方法
data.drop_duplicates()
Out[7]: 
    k1  k2
0  one   1
2  one   2
3  two   3
5  two   4

两个方法都默认判断全部列,但是也可以指定列进行重复项判断。

data['v1']=range(7)

data
Out[9]: 
    k1  k2  v1
0  one   1   0
1  one   1   1
2  one   2   2
3  two   3   3
4  two   3   4
5  two   4   5
6  two   4   6

#指定列进行判断
data.drop_duplicates(['k1'])
Out[10]: 
    k1  k2  v1
0  one   1   0
3  two   3   3

两个方法默认保留第一个出现的值组合。传入keep='last'保留最后一个:

data.drop_duplicates(['k1','k2'],keep='last')
Out[14]: 
    k1  k2  v1
1  one   1   1
2  one   2   2
4  two   3   4
6  two   4   6

#keep参数有三个取值:"first","last",False
#其中"first"是默认的,False表示去除所有的重复行
#参数inplace=True表示直接在原来的DataFrame上去处重复项,False表示生成一个副本
data.drop_duplicates(['k1','k2'],keep='last',inplace=True)

data
Out[19]: 
    k1  k2  v1
1  one   1   1
2  one   2   2
4  two   3   4
6  two   4   6

 

 

posted @ 2018-07-23 10:19  平淡才是真~~  阅读(428)  评论(0编辑  收藏  举报