我在python中有以下数据帧:
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
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的多索引,但它还包含其他多索引,如马和猫。 Dataframe 2也不包含数据帧1的所有列,因为您可以看到它错过了第3列。
我想比较这两个数据帧,如果两个数据帧之间的任何常见的第一个>第二个(多个)索引的值也相互匹配,则函数返回True,否则为False。
我可以通过手动查看每个值进行迭代,但这会增加函数的时间复杂度。有没有人知道pandas是否提供了内置的方法,或者我是否需要自己构建一个函数。如果是这样,你能指出我正确的方向吗?任何建议都非常感谢。谢谢。
答案 0 :(得分:3)
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