如何在匹配条件的 2 列中获取具有相同值的行,而在其他两列中获取具有不同值的行

How do I get rows with same values in 2 columns who match a condition and with a different value in the other two

我有一个数据框,如下例所示:

          A      B     C   D  E 
    1    foo    one    0   1  0
    2    foo    one    1   2  1
    ..........
    103  foo    two    2   3  1
    54   foo    two    3   4  1
    ..........
    25   bar    three  4  15  0
    96   bar    three  5  16  1
    ..........
    67   bar    four   6  17  0
    111  bar    five   7  18  1

我的预期输出:

          A      B     C   D  E 
    1    foo    one    0   1  0
    2    foo    one    1   2  1
    ..........
    25   bar    three  4  15  0
    96   bar    three  5  16  1
    ..........

解释:
(这是两个相互连接的数据帧,E 列标识特定行来自哪个集合,0 表示“set_0”,1对于“set_1”。我现在想查看两个数据框中所有列具有相同值的行,两列除外。)

在索引为 1 和 2 的行中,A 列和 B 列的值相同,set_1 和 set_0 的值相同,但 C 和 D 中的值不同。所以,这些是我想看的专栏。在索引为 103 和 54 的行中,A 列和 B 列的行确实匹配,但来自同一组。所以,我不想要这些行。在索引为 25 和 96 的行中,我在 A 列和 B 列中具有相同的值,从 set_1 到 set_0。所以,我想要这些行。索引为 67 和 111 的行在 A 列和 B 列中具有不同的值,但是属于不同的集合,所以我不想要这些行。

我已经尝试了 groupbydrop_duplicates,但是我无法得到我想要查询属于不同数据集的行的部分,由列 E 的 0 和 1 表示。
我该怎么做?

如果可能,测试 A,B 列中的每个分组在 E 列中是否有 2 个不同的唯一值使用:

df = df[df.groupby(['A','B'])['E'].transform('nunique').eq(2)]