我需要在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
答案 0 :(得分:1)
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
保留last
或keep
个重复行:
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