【发布时间】:2017-12-10 04:22:47
【问题描述】:
我有两个具有共同 "License Number" 列的数据框。我想将它们与indicator 合并,这样我以后可以选择left_only 或right_only 来查找仅出现在其中一个数据框中的条目。
但是,我发现在合并时,只要 A 和 B 中的条目相同,一切都会正常进行,因此从理论上讲,这对于所有条目都相等的相同大小的数据帧非常有效。
如果 A 中有条目,但 B 中没有,即使用于合并的键 (License Number) 不匹配,合并仍会从 B 中提取行数据并将其放在 A 中的数据之外在这些行之间。
这是我的做法 (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 列不匹配时,合并只会留下空白或一些错误消息,但不会将所有数据向上移动一行。
【问题讨论】:
-
在这个问题中你不应该加入索引。删除 left_index=True 和 right_index=True。只需加入“许可证号”即可。我认为这将为您提供预期的结果。
-
谢谢,没错。我对按索引加入的含义感到困惑,现在我发现它不适用于此处。
-
一点也不,毕竟您提出了正确的解决方案。提交,我会接受。
标签: python python-3.x pandas merge