Python 如何获得两列中值相同且与某个条件匹配的行,以及另外两列中值不同的行
我有一个数据框,看起来像下面的示例:Python 如何获得两列中值相同且与某个条件匹配的行,以及另外两列中值不同的行,python,python-3.x,pandas,dataframe,python-3.6,Python,Python 3.x,Pandas,Dataframe,Python 3.6,我有一个数据框,看起来像下面的示例: 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
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列中有不同的值,但属于不同的集合,所以我不想要这些行
我已经尝试了groupby
和drop\u duplicates
,但是我无法得到我想要查询属于不同数据集的行的部分,这些行由列E的0和1表示。如何做到这一点?如果可能的话,测试各组在
A,B
列中是否有两个不同的唯一值E
列使用:
df = df[df.groupby(['A','B'])['E'].transform('nunique').eq(2)]
.eq(2)
做什么?它是干什么用的?@NaveenKumar-如果有两个唯一的值,它会进行比较,这里是0,1