从Pandas数据框中删除重复的行,其中只有一些列具有相同的值

时间:2017-06-11 08:20:30

标签: python pandas dataframe duplicates

我有一个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

1 个答案:

答案 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