在包括NaN的pandas中查找匹配的列

时间:2017-12-16 15:27:27

标签: python pandas

关于pandas,我有一个非常具体的问题。我有两个DataFrame,都是二进制的:一个包含多个模式匹配让我们说:

0 : 1,NaN,1,Nan,Nan  
1 : Nan,1,1,Nan,Nan

和一个包含实际数据记录的文件

0 : 1,0,0,1,0  
1 : 0,0,0,0,1  
2 : 1,0,1,0,0  

我想执行一个操作,告诉我哪些记录数据行符合哪些规则。在示例规则中,0将匹配记录2.缺少的值不必匹配任何内容,其中存在我的问题:如果不存在任何缺失值,我可以简单地使用pd.merge(df1,df2,how="inner"),但是内部联接并不匹配NaN s。

是否有一个简单优雅的解决方案而没有完成所有循环?

编辑添加(为清晰起见):

此:

0 : 1,1,NaN,NaN,NaN

应与两者匹配:

0 : 1,1,0,0,0
1 : 1,1,0,0,1 

1 个答案:

答案 0 :(得分:2)

如果是二进制,我们可以使用Y.plot

duplicated

编辑

df=pd.concat([df1.fillna(0),df2],keys=['df1','df2'])
df[df.astype(int).duplicated(keep=False)]
Out[37]: 
         1    2  3    4    5
df1 0  1.0  0.0  1  0.0  0.0
df2 2  1.0  0.0  1  0.0  0.0