我有一个pandas数据帧如下:
A B C
1 2 x
1 2 y
3 4 z
3 5 x
我希望在特定列中共享相同值的行只剩下1行。在上面的示例中,我的意思是列 A 和 B 。换句话说,如果列 A 和 B 的值在数据框中出现不止一次,则只应保留一行(哪一行无关紧要)。
FWIW:所谓的重复行的最大数量(即列 A 和 B 相同)是2.
结果应该像这样说:
A B C
1 2 x
3 4 z
3 5 x
或
A B C
1 2 y
3 4 z
3 5 x
答案 0 :(得分:17)
将drop_duplicates
与参数subset
一起使用,以便仅保留最后重复的行添加keep='last'
:
df1 = df.drop_duplicates(subset=['A','B'])
#same as
#df1 = df.drop_duplicates(subset=['A','B'], keep='first')
print (df1)
A B C
0 1 2 x
2 3 4 z
3 3 5 x
df2 = df.drop_duplicates(subset=['A','B'], keep='last')
print (df2)
A B C
1 1 2 y
2 3 4 z
3 3 5 x