当合并的行不匹配时,如何在pandas合并中填写值

时间:2017-07-06 08:56:43

标签: python python-3.x pandas merge

我有两个数据框,共有"License Number"列。我想将它们与indicator合并,以便稍后我可以选择left_onlyright_only来查找仅出现在其中一个数据框中的条目。

但是,我发现在合并时,只要条目在A和B中相同,一切都很顺利,所以从理论上讲,这对于所有条目相同的相同大小的数据帧都是完美的。

如果A中有条目,但B中没有条目,则合并仍会从B中提取行数据并将其放在A中的数据旁边,即使用于合并的键(License Number)不在&# 39; t在这些行之间匹配。

我是这样做的(code you can run with sample data is here):

merged_sheet = pd.merge(df1, df2, on='License Number', left_index=True, right_index=True, how='outer', indicator=True)

在我附加数据的示例中,前三个行很好,但是当它到达第四行时,两个数据帧之间没有匹配,而是将其标记为NaN或其他( Excel将在VLOOKUP中标记为#N / A,它只是简单地从完全不相关的行中提取信息。

我的预期结果是,当License Number列不匹配时,合并只留下一个空格或一些错误消息,但不是它将所有数据移动一行。

1 个答案:

答案 0 :(得分:2)

在这种特殊情况下,您不应加入索引,删除left_index = Trueright_index = True

merged_sheet = pd.merge(df1, df2, on='License Number', how='outer', indicator=True)

然后,您可以使用以下语句查看outer联接中的所有不匹配行:

merged_sheet.query('_merge != "both"')