【问题标题】:How to compare a dataframe to a subset intersection of another dataframe in pandas in python?python - 如何将数据框与python中熊猫中另一个数据框的子集交集进行比较?
【发布时间】:2017-11-01 20:34:54
【问题描述】:

我在 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 列。

我想比较这两个数据帧,如果两个数据帧之间任何常见的第一->第二(多)索引的值也相互匹配,则函数返回 True,否则返回 False。

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

【问题讨论】:

  • 你能发布你想要的数据集吗?

标签: python pandas dataframe data-science


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多