删除一列等于另一列的重复行

remove duplicate rows where one column equals a different column

我有一个这样的 df:

d = {'label':['A','B','G','O']
    ,'label2':['C','D','O','Z']}
df = pd.DataFrame(d)
print(df)

  label label2
0   A    C
1   B    D
2   G    O
3   O    Z

我想做的是去掉 label = label2 的重复行(只保留第一行) 所以我想从上面的 df:

得到这样的东西
  label label2
0   A    C
1   B    D
2   G    O

我在下面做了这个,但没有成功

df[~df[['label', 'label2']].apply(frozenset, axis=1).duplicated()]

知道如何解决这个问题吗?

试试这个,对 Seires 使用 .isin 方法:

mask = ~df['label'].isin(df['label2'])
df_output = df[mask]
print(df_output)

输出:

  label label2
0   A    C
1   B    D
2   G    O

您可以使用 drop 删除两列之间的重复标签:

df.drop(df[df['label'].isin(df['label2'])].index, inplace=True)
print(df)

# Output:
  label label2
0     A      C
1     B      D
2     G      O