• Pandas去重DataFrame
    接上篇,这篇就剩最后的用Pandas对DataFrame里面的数据去重,这里也有两种方法,可以直接看官方文档(但是掌柜觉得其实就是一种方法,因为第一种只是显示哪些重复。。。)
  1. 使用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参数,可以设置重复数据的显示规则,具体请看官方文档,掌柜就不多做叙述,下面继续看第二种方法。

  1. 使用 drop_duplicates方法,它才是去除重复数据。还是上面的例子,我们使用这个方法:
df2.drop_duplicates('a')

就会得到去重后的数据:

是不是也很简单?😁当然他也有同样的可选参数keep来设置去除重复数据的规则,比如下面这样,保留最后重复的数据,去除前面的重复数据:

然后要去重多列只需要把含有重复数据的列写成列表的形式即可。

PS: Pandas还可以根据索引来去重,具体操作可以看下面这个实例:

使用的是Index.duplicated方法,这里要注意的是如果只是写df3.index.duplicated()方法,返回的是类似解法一的结果,并不去重数据;要像下面这样以切片的形式来写,注意中括号里面的最前面是有个波浪线的才会去重:

df3[~df3.index.duplicated()]


好了,不同工具对数据进行去重的方法掌柜已经总结完毕,希望对大家有用🧐。