关于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
答案 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