You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas中能否同时使用left_index与left_on进行多键合并?

不用set_index()实现多键合并的两种方法

你需要同时用索引列和普通列作为合并键,不用提前设置复合索引的话,有两种直接用merge()的可行方案:

方案1:临时将索引转为普通列合并

把左边数据集的索引(name)通过reset_index()转为列,然后直接指定两个合并键:

# 临时把索引转为列,合并后可按需将name恢复为索引
pd.merge(df3_sp.reset_index(), df4, left_on=['name', 'math'], right_on=['title', 'math'])

这种方法逻辑直观,适配所有Pandas版本,合并完成后如果需要,可再通过set_index('name')将name重新设为索引。

方案2:同时使用left_index和left_on参数

Pandas 0.23及以上版本支持同时指定left_index=True(用左边的索引作为一个合并键)和left_on(用左边的普通列作为另一个合并键),对应右边的right_on需指定两个匹配列:

pd.merge(df3_sp, df4, left_index=True, left_on='math', right_on=['title', 'math'])

这里左边的合并键是name(索引)+math(列),右边的合并键是title(对应name)+math(对应math),完全匹配你的需求,且无需修改原数据集的索引结构。

如果你的Pandas版本低于0.23,这种方法会报错,建议优先使用方案1。

内容的提问来源于stack exchange,提问作者kangyeop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 15:57:32