繁体   English   中英

如何将数据框与python中熊猫中另一个数据框的子集相交进行比较?

[英]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。

我想比较这两个数据帧,如果两个数据帧之间任何常见的first-> second(multi)索引的值也彼此匹配,则函数返回True,否则返回False。

我可以手动查看每个值来进行迭代,但这会增加函数的时间复杂度。 有没有人知道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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM