Pandas 当其他列中的值相同时删除重复项

Pandas drop duplicates when values in other columns are same

我有以下数据框 df:

Col1    Col2    Val
T1      L2      1
T1      L2      1
T1      G3      3
G3      G3      4
G3      G3      6
G3      L2      7
L2      L2      8
L2      L2      9

我想获得以下信息:

Col1    Col2    Val
T1      L2      1
T1      L2      1
T1      G3      3
G3      G3      4
G3      L2      7
L2      L2      8

仅当 Col1Col2 相同时,我想删除基于列 Val 的重复行。

我正在尝试使用以下 df.drop_duplicates(subset='Val', keep='first') 但无法在 Col1Col2.

上添加条件

我不确定如何处理上述问题。

我们可以检查 Col1 == Col2 和两列重复的行:

df[~(df["Col1"].eq(df["Col2"]) & df.duplicated(subset=["Col1", "Col2"]))]
  Col1 Col2  Val
0   T1   L2    1
1   T1   L2    1
2   T1   G3    3
3   G3   G3    4
5   G3   L2    7
6   L2   L2    8