删除重复值

阅读: 4004     评论:0

原始数据中,往往包含大量重复的行,需要我们删除,让数据集更健康。

In [51]: df = pd.DataFrame({'k1':['one','two']*3 + ['two'], 'k2':[1,1,2,3,3,4,4]})

In [52]: df  # 最后一行是重复的
Out[52]:
    k1  k2
0  one   1
1  two   1
2  one   2
3  two   3
4  one   3
5  two   4
6  two   4

In [53]: df.duplicated()  # 
Out[53]:
0    False
1    False
2    False
3    False
4    False
5    False
6     True
dtype: bool

In [54]: df.drop_duplicates()
Out[54]:
    k1  k2
0  one   1
1  two   1
2  one   2
3  two   3
4  one   3
5  two   4

In [55]: df # 并没有改变原数据
Out[55]:
    k1  k2
0  one   1
1  two   1
2  one   2
3  two   3
4  one   3
5  two   4
6  two   4

上面,使用duplicated方法判断各行是否有重复,并返回一个布尔值Series。然后使用drop_duplicates方法将重复行删除,留下那些不重复的。

如果想指定根据某列的数据进行去重判断和操作,可以指定列名:

In [56]: df['v1'] = range(7)

In [57]: df
Out[57]:
    k1  k2  v1
0  one   1   0
1  two   1   1
2  one   2   2
3  two   3   3
4  one   3   4
5  two   4   5
6  two   4   6

In [58]: df.drop_duplicates(['k1'])
Out[58]:
    k1  k2  v1
0  one   1   0
1  two   1   1

默认情况下都是保留第一个观察到的值,如果想保留最后一个,可以使用参数keep='last':

In [59]: df.drop_duplicates(['k1','k2'], keep='last')
Out[59]:
    k1  k2  v1
0  one   1   0
1  two   1   1
2  one   2   2
3  two   3   3
4  one   3   4
6  two   4   6

 补全缺失值 替换 

评论总数: 0


点击登录后方可评论