如何将数据帧与 python 中 pandas 中另一个数据帧的子集交集进行比较?

How to compare a dataframe to a subset intersection of another dataframe in pandas in python?

我在 python 中有以下数据帧:

数据帧 1

             1  2  3  4  5
dog   dog    0  0  0  0  0
      fox    0  0  0  0  0
      jumps  0  0  0  0  0
      over   0  0  0  0  0
      the    0  0  0  0  0
fox   dog    0  0  0  0  0
      fox    0  0  0  0  0
      jumps  0  0  0  0  0
      over   0  0  0  0  0
      the    0  0  0  0  0
jumps dog    0  0  0  0  0
      fox    0  0  0  0  0
      jumps  0  0  0  0  0
      over   0  0  0  0  0
      the    0  0  0  0  0
over  dog    0  0  0  0  0
      fox    0  0  0  0  0
      jumps  0  0  0  0  0
      over   0  0  0  0  0
      the    0  0  0  0  0
the   dog    0  0  0  0  0
      fox    0  0  0  0  0
      jumps  0  0  0  0  0
      over   0  0  0  0  0
      the    0  0  0  0  0

数据帧 2

             1  2  4  5
dog   dog    0  0  0  0
      fox    0  0  0  0
      jumps  0  0  0  0
      the    0  0  0  0
      horse  0  0  0  0
fox   dog    0  0  0  0
      fox    0  0  0  0
      over   0  0  0  0
      the    0  0  0  0
      cat    0  0  0  0

您可以看到 dataframe2 包含 dataframe1 的多索引,但它还包含额外的多索引,如 horse 和 cat。数据框 2 也不包含数据框 1 的所有列,因为您可以看到它缺少第 3 列。

我想比较这两个数据帧,这样函数 returns 如果两个数据帧之间任何公共的第一->第二(多)索引的值也相互匹配则为真,否则为假.

我可以通过手动查看每个值来进行迭代,但这会增加函数的时间复杂度。有谁知道 pandas 是否提供了执行此操作的内置方法,或者我是否需要自己构建一个函数。如果是这样,你能指出我正确的方向吗?任何建议都非常感谢。谢谢。

IIUC,可以使用eq:

df1.eq(df2)

输出:

                 1      2      3      4      5
dog   dog     True   True  False   True   True
      fox     True   True  False   True   True
      horse  False  False  False  False  False
      jumps   True   True  False   True   True
      over   False  False  False  False  False
      the     True   True  False   True   True
fox   cat    False  False  False  False  False
      dog     True   True  False   True   True
      fox     True   True  False   True   True
      jumps   True   True  False   True   True
      over   False  False  False  False  False
      the     True   True  False   True   True
jumps dog    False  False  False  False  False
      fox    False  False  False  False  False
      jumps  False  False  False  False  False
      over   False  False  False  False  False
      the    False  False  False  False  False
over  dog    False  False  False  False  False
      fox    False  False  False  False  False
      jumps  False  False  False  False  False
      over   False  False  False  False  False
      the    False  False  False  False  False
the   dog    False  False  False  False  False
      fox    False  False  False  False  False
      jumps  False  False  False  False  False
      over   False  False  False  False  False
      the    False  False  False  False  False