Python 合并两个数据集以形成布尔列(pandas)

Python 合并两个数据集以形成布尔列(pandas),python,pandas,Python,Pandas,我在熊猫中有两个数据帧: dfm_one data group_a group_b 0 3 a z 1 1 a z 2 2 b x 3 0 b x 4 0 b x 5 1 b z 6 0 c x 7 0 c y 8 3 c z 9 3 c z dfm_2 data group_a group_b 0 4 a x 1 4 a

我在熊猫中有两个
数据帧

dfm_one

    data    group_a group_b
0   3   a   z
1   1   a   z
2   2   b   x
3   0   b   x
4   0   b   x
5   1   b   z
6   0   c   x
7   0   c   y
8   3   c   z
9   3   c   z
dfm_2

    data    group_a group_b
0   4   a   x
1   4   a   y
2   4   b   x
3   4   b   x
4   4   b   y
5   1   b   y
6   1   b   z
7   1   c   x
8   4   c   y
9   3   c   z
10  2   c   z
作为输出,我需要一个布尔列,用于指示dfm_one在dfm_two中是否存在针对每个组a组b组合的匹配数据项(即具有相同的值)

因此,我的预期输出是:

0   False
1   False
2   False
3   False
4   False
5   True
6   False
7   False
8   True
9   True
我猜代码应该是这样的:

dfm_one.groupby(['group_a','group_b']).apply(lambda x: ??)
apply
中的函数应该使用
isin
方法


另一个解决方案可能是合并两个数据集,但我认为这并不简单,因为
数据帧中没有唯一标识符
好的,这是一个轻微的改动,如果我们将df转换为
str
dtype,那么我们可以调用
sum
将行连接成字符串,我们可以使用结果字符串作为一种唯一标识符,然后在另一个df上调用
isin
,再次转换为
str

In [91]:
dfm_one.astype(str).sum(axis=1).isin(dfm_two.astype(str).sum(axis=1))

Out[91]:
0    False
1    False
2    False
3    False
4    False
5     True
6    False
7    False
8     True
9     True
dtype: bool
转换的输出:

In [92]:
dfm_one.astype(str).sum(axis=1)

Out[92]:
0    3az
1    1az
2    2bx
3    0bx
4    0bx
5    1bz
6    0cx
7    0cy
8    3cz
9    3cz
dtype: object

In [93]:   
dfm_two.astype(str).sum(axis=1)

Out[93]:
0     4ax
1     4ay
2     4bx
3     4bx
4     4by
5     1by
6     1bz
7     1cx
8     4cy
9     3cz
10    2cz
dtype: object

dfm_-one.merge(dfm_-two)
将为您提供通用值hanks,这就是我想要的!(但我猜字符串操作会使它在我的数据集上运行得非常慢,数据集上有3000多万行。)可能但是调用
apply
也会非常慢,因为这只是一个
for
循环