duplicated
方法,它会返回一个布尔向量,其长度为行数,表示行是否重复,但是并不会删除重复数据。来看实例:import pandas as pd
import numpy as np
df2 = pd.DataFrame({
'a': ['one', 'one', 'two', 'two', 'two', 'three', 'four'],
'b': ['x', 'y', 'x', 'y', 'x', 'x', 'x'],'c': np.random.randn(7)})
df2
然后会得到这样一个表格:
现在使用duplicated方法:
df2.duplicated('a')
会得到这样的结果:
你看,他只是告诉你哪行是重复的数据(True值得就是),但是并没有删除重复数据。当然该方法里面还有一个可选的keep参数,可以设置重复数据的显示规则,具体请看官方文档,掌柜就不多做叙述,下面继续看第二种方法。
drop_duplicates
方法,它才是去除重复数据。还是上面的例子,我们使用这个方法:df2.drop_duplicates('a')
就会得到去重后的数据:
是不是也很简单?当然他也有同样的可选参数keep来设置去除重复数据的规则,比如下面这样,保留最后重复的数据,去除前面的重复数据:
然后要去重多列只需要把含有重复数据的列写成列表的形式即可。
PS: Pandas还可以根据索引来去重,具体操作可以看下面这个实例:
使用的是Index.duplicated
方法,这里要注意的是如果只是写df3.index.duplicated()方法,返回的是类似解法一的结果,并不去重数据;要像下面这样以切片的形式来写,注意中括号里面的最前面是有个波浪线的才会去重:
df3[~df3.index.duplicated()]