在列组合中查找重复项

时间:2016-05-14 22:10:24

标签: python pandas duplicates

我需要在2列中保留唯一记录。 想象一下在下面的数据框(df)中,我想删除列x和y中的重复信息。

  

x y z

     

1 3 1

     

4 4 3

     

2 4 3

     

1 3 2

     

3 5 2

我所做的是连接XY = str(x)+ str(y)并通过pd.unique(df.XY())保留唯一值。 记录(1 3 1)和(1 3 2)将是重复的。

我相信必须有一个更好的方法来做到这一点......特别是当它涉及3个或更多列时。 谢谢, MB

1 个答案:

答案 0 :(得分:1)

使用drop_duplicates

print df.drop_duplicates(subset=['x','y'])
   x  y  z
0  1  3  1
1  4  4  3
2  2  4  3
4  3  5  2

您可以使用参数first保留lastkeep个重复行:

print df.drop_duplicates(subset=['x','y'])
#it is same as:
print df.drop_duplicates(subset=['x','y'], keep='first')
   x  y  z
0  1  3  1
1  4  4  3
2  2  4  3
4  3  5  2

print df.drop_duplicates(subset=['x','y'], keep='last')
   x  y  z
1  4  4  3
2  2  4  3
3  1  3  2
4  3  5  2

如果您需要删除所有重复项,请使用keep=False

print df.drop_duplicates(subset=['x','y'], keep=False)
   x  y  z
1  4  4  3
2  2  4  3
4  3  5  2