3 回答

TA贡献1805条经验 获得超10个赞
In [5]: a.reset_index().merge(b, how="left").set_index('index')
Out[5]:
col1 to_merge_on col2
index
a 1 1 1
b 2 3 2
c 3 4 NaN
注意:如果和之间存在多个匹配项,则对于某些左合并操作,您可能最终会得到更多行a,b并且需要进行重复数据删除(有关重复数据删除的文档)。这就是为什么熊猫不为您保留索引的原因。

TA贡献1846条经验 获得超7个赞
有一个非pd.merge解决方案。使用map和set_index
In [1744]: a.assign(col2=a['to_merge_on'].map(b.set_index('to_merge_on')['col2']))
Out[1744]:
col1 to_merge_on col2
a 1 1 1.0
b 2 3 2.0
c 3 4 NaN
并且,不要index为索引引入虚拟名称。

TA贡献1891条经验 获得超3个赞
您可以在左侧数据框上复制索引并进行合并。
a['copy_index'] = a.index
a.merge(b, how='left')
我发现在处理大型数据框和使用pd.merge_asof()(或dd.merge_asof())时,此简单方法非常有用。
当重置索引很昂贵(大数据帧)时,这种方法会更好。
添加回答
举报