如何将数据帧与 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
我在 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