![63fe18644929d89cbf0710b93a1cf42a.png](https://i-blog.csdnimg.cn/blog_migrate/3bba7458e2d5c2a9c92e3e5403d9c0b1.jpeg)
df.duplicated() :
duplicated方法返回的是一个布尔值Series, 与之前出现的行对比,是否存在重复的行.如果重复则返回True.
先来造一个DF数组,重复的行我已经标识出来了.
![6fe239ed0865695867d3c720737578ad.png](https://i-blog.csdnimg.cn/blog_migrate/03e879f6e004f3c9c2dff5317329259f.jpeg)
使用duplicated方法后,索引3,4都显示为True,因为3行与1行重复了,而4行与2行重复了.
![f28002f50821b48d90035044ff395511.png](https://i-blog.csdnimg.cn/blog_migrate/7e76cf8c0db6edafa4b2839be96ffe83.jpeg)
df.drop_duplicates() ⬅注意这里后面是'S'结尾的.
drop_duplicates方法返回的是一个新的DataFrame数组,返回的数组就是duplicated中False的部分.
这里可以清楚的看到,索引值为3和4的部分不见了.
![d97cfdf4915f4706ca5df5068bd773ea.png](https://i-blog.csdnimg.cn/blog_migrate/bd3b2561884f50b48b1c747843333222.jpeg)
到目前为止,检查重复值都是基于整行来检测,那么假设有下面这样一个数组
![8f3d0d1ad7dab8ed4b047e26377e2b08.png](https://i-blog.csdnimg.cn/blog_migrate/30390f205f3c775ea3e5520ffb6abcbc.jpeg)
我添加了新的一列,这样一来,每一行都不是重复的.我们使用duplicated检查一下,可以看到返回的布尔值没有为True的,意味着没有重复的行出现.
![aae170001e5aae43142d9cf23ae5873a.png](https://i-blog.csdnimg.cn/blog_migrate/b0d52c2b856362029b7c1994587432f6.jpeg)
那么我们看one这一列,里面明明只有'a','b'两个类型,假设我现在希望'one'这一列没有重复值的出现,该怎么做呢?
再介绍一下 drop_duplicates() 方法.
在这里未经同意援引作者OraYang的博客内容,作为学习之用.
DataFrame.drop_duplicates(subset=None, keep='first', inplace=False)
![6961b15d7e2175c1ff29d7aee0bb5618.png](https://i-blog.csdnimg.cn/blog_migrate/ab9c005350c4921e8780f06b77df72db.jpeg)
下面还是来个实例看看吧,以这个数组为例.
![8f3d0d1ad7dab8ed4b047e26377e2b08.png](https://i-blog.csdnimg.cn/blog_migrate/30390f205f3c775ea3e5520ffb6abcbc.jpeg)
下面的图中用红箭头标识出来的两个参数都是在默认状态下的参数,就是你填或者不填效果都是这样.
![3f1e1f9b80092a7cdfd8f70e132328f8.png](https://i-blog.csdnimg.cn/blog_migrate/70aa043e2c4a9a2d027d684d987b982d.jpeg)
上图中的first是删除重复项,并保存第一次出现的项.
下图中的last是删除重复项,并保存最后出现的项.
![4b63020f7bcdd636dcce338999d51950.png](https://i-blog.csdnimg.cn/blog_migrate/d8b6b41c9484334cc1fadd4b4357e4a8.jpeg)
接下来再改变一下inplace的参数,它默认状态下是False,这样就不会更改原来的数组data,而且会返回一个新的数组.
将inplace改成True之后将会直接更改你的原始数组data.下图可以看到,运行之后并没有出现新的数组.
![e82f58b1f87e78663a69b3c6ccd4387a.png](https://i-blog.csdnimg.cn/blog_migrate/0d6b4b559846d60825cb0283b70c50c0.jpeg)
再运行data之后就能看到data数组本身已经被改变了.
![295c8f619b2eb4a4e7541e6fe1976d96.png](https://i-blog.csdnimg.cn/blog_migrate/312ffefacdc37c027bafd43b36542c38.jpeg)
在有3列的情况下,我们也可以选择其中2列进行重复值的删除,传入的列名使用列表形式.
![32dd61d13320c45f609b437e30778d9f.png](https://i-blog.csdnimg.cn/blog_migrate/00e0665d5e8b59d9c6dbbe33212c289f.jpeg)