与布尔索引相关的Duplicated()函数与drop_duplicates比较会产生不同的结果

时间:2019-01-01 02:58:12

标签: python pandas transform

数据框如下所示:

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

当我检查重复项时,通过执行以下操作获得布尔值索引 df.duplicated(),然后将其用作过滤器 显示不同结果的df[df.duplicated()]df.drop_duplicates()

结果中又创建了一行

2 one 2

1 个答案:

答案 0 :(得分:2)

drop_duplicate将删除所有重复的行。当duplicated具有重复项时,第一项重复项将返回False,其他行将返回True,因此它们是针对不同问题的不同功能目标。

df.duplicated()
0    False
1     True
2    False
3    False
4     True
5    False
6     True
dtype: bool

df.drop_duplicates()
    k1  k2
0  one   1
2  one   2
3  two   3
5  two   4

如何使输出相同?

检查唯一值

df[~df.duplicated(keep=False)]
    k1  k2
2  one   2

df.drop_duplicates(keep=False)
    k1  k2
2  one   2