我有两个数据框,共有"License Number"
列。我想将它们与indicator
合并,以便稍后我可以选择left_only
或right_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
列不匹配时,合并只留下一个空格或一些错误消息,但不是它将所有数据移动一行。
答案 0 :(得分:2)
在这种特殊情况下,您不应加入索引,删除left_index = True
和right_index = True
。
merged_sheet = pd.merge(df1, df2, on='License Number', how='outer', indicator=True)
然后,您可以使用以下语句查看outer
联接中的所有不匹配行:
merged_sheet.query('_merge != "both"')