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

bet*_*eta 8 python duplicates dataframe pandas

我有一个pandas数据帧如下:

A   B   C
1   2   x
1   2   y
3   4   z
3   5   x
Run Code Online (Sandbox Code Playgroud)

我希望在特定列中只有一行共享相同值的行.在上面的例子中,我指的是A列和B列.换句话说,如果列AB的值在数据帧中出现不止一次,则只应保留一行(哪一行无关紧要).

FWIW:所谓的重复行的最大数量(即,列AB相同)是2.

结果应该像这样说:

A   B   C
1   2   x
3   4   z
3   5   x
Run Code Online (Sandbox Code Playgroud)

要么

A   B   C
1   2   y
3   4   z
3   5   x
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 19

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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)