创建两个熊猫DF之间的差异o

时间:2019-08-01 07:18:34

标签: python pandas

我有 firstDF:

rs     Chr      MapInfo         Name       SourceSeq
1       A1       B1              C1          D1
2       A2       B2              C2          D2
3       A3       B3              C3          D3
4       A4       B4              C4          D4
5       A5       B5              C5          D5

secondDF:

Chr       MapInfo     Name    SourceSeq       Unnamed: 0       rs
 1          A1          B1        C1             D1            E1
 4          A4          B4        C4             D4            E4
 8          A8          B8        C8             D8            E8
 10         A10         B10       C10            D10           E10

我需要创建一个仅包含 secondDF 中第一行中不存在的行的新数据框:

newDF:

Chr       MapInfo     Name    SourceSeq       Unnamed: 0       rs
8          A8          B8        C8             D8            E8
10         A10         B10       C10            D10           E10

我想用Name对其进行过滤。有什么更好的方法呢?

我经历了fullouter合并,但交易方式有所不同,老实说,我不知道如何正确地进行合并。

第二,认为这是一个循环,但效率不高。

最后我尝试通过以下方式来做到这一点:

new= secondDF[~firstDF.Name.isin(secondDF.name)] 

但是我得到了

  

IndexingError:作为索引器提供的不可对齐的布尔系列(布尔系列和被索引对象的索引不匹配

有人可以给我有关该任务的建议吗?

1 个答案:

答案 0 :(得分:1)

解决方案就是更改掩码-从secondDF.Name中按列比较firstDF,从示例数据中是MapInfo列,在实际数据中,布尔掩码的Name列与之相同大小和索引值,例如secondDF,因为已过滤secondDF DataFrame:

new= secondDF[~secondDF.Name.isin(firstDF.MapInfo)] 
print (new)
   Chr MapInfo Name SourceSeq Unnamed: 0   rs
2    8      A8   B8        C8         D8   E8
3   10     A10  B10       C10        D10  E10