You need to enable JavaScript to run this app. 如何基于行索引合并三个DataFrame且无需将索引转为列?
优惠活动
大模型
产品
解决方案
定价
更多

如何基于行索引合并三个DataFrame且无需将索引转为列?

基于行索引合并多DataFrame的实现方案

你不需要将行索引转为普通列即可完成合并,pandas提供了原生支持索引关联的合并接口,以下是三种常用实现方式:

方法1:修改merge参数适配索引关联

pd.merge提供了left_index和right_index两个布尔参数,设置为True即可指定用左右表的行索引作为关联键,你原有基于reduce的写法只需调整merge参数即可:

from functools import reduce

dfs = [result_eu_SpeciesNameGenuine, result_ieu_SpeciesNameGenuine, result_cosine_SpeciesNameGenuine]
# how参数可按需调整为'outer'/'left'/'right'
df_final = reduce(lambda left,right: pd.merge(left, right, left_index=True, right_index=True, how='inner'), dfs)

方法2:使用join方法(多表索引合并最优写法)

DataFrame内置的join方法默认基于行索引做关联,支持直接传入DataFrame列表批量合并,无需额外引入reduce,写法更简洁:

# how参数可按需调整,多表存在重名列时可通过lsuffix/rsuffix指定后缀区分
df_final = result_eu_SpeciesNameGenuine.join(
    [result_ieu_SpeciesNameGenuine, result_cosine_SpeciesNameGenuine],
    how='inner'
)

方法3:使用concat横向拼接(适合纯对齐场景)

如果你的需求只是按索引对齐拼接多表的所有列,不需要特殊关联逻辑,直接用pd.concat设置横向拼接即可,默认按索引对齐:

# join参数默认是'outer',需要取索引交集时设置为'inner'
df_final = pd.concat(dfs, axis=1, join='inner')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 11:00:07