移除重复数据
dataframe中常常会出现重复行,DataFrame对象的duplicated方法返回一个布尔型的Series对象,可以表示各行是否是重复行。还有一个drop_duplicates方法,用于返回一个移除了重复行的DataFrame。
In [36]: data = DataFrame({'k1':['one']*3+['two']*4,"k2":[1,1,2,3,3,4,4]})
In [37]: data
Out[37]:
k1 k2
0 one 1
1 one 1
2 one 2
3 two 3
4 two 3
5 two 4
6 two 4
#duplicated方法用于判断是否重复行,返回的是一个Series对象
In [39]: data.duplicated()
Out[39]:
0 False
1 True
2 False
3 False
4 True
5 False
6 True
dtype: bool
#drop_duplicates,剔除重复行,默认检查的是所有列的集合。
In [41]: data.drop_duplicates()
Out[41]:
k1 k2
0 one 1
2 one 2
3 two 3
5 two 4
#指定部分列进行重复判断和删除
In [42]: data.duplicated('k1')
Out[42]:
0 False
1 True
2 True
3 False
4 True
5 True
6 True
dtype: bool
In [43]: data.drop_duplicates('k2')
Out[43]:
k1 k2
0 one 1
2 one 2
3 two 3
5 two 4
是否已经发现,duplicated和drop_duplicates默认保留的都是第一个出现的值组合,传入keep=‘last’,则保留最后一个出现的值。
keep的选项:
‘first’:默认保留第一个出现的值。
‘last’:保留最后一个出现的值
False:使所有的duplicates为True
In [49]: data.drop_duplicates(keep = 'last') Out[49]: k1 k2 1 one 1 2 one 2 4 two 3 6 two 4 In [50]: data.drop_duplicates(keep = False) Out[50]: k1 k2 2 one 2
利用函数或映射进行数据转换
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/bigdata/9213.html