pandas(九)数据转换

移除重复数据

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

 

利用函数或映射进行数据转换

 

posted @ 2018-04-16 11:56  左手十字  阅读(229)  评论(0编辑  收藏  举报