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

Python Pandas中忽略行索引拼接多个DataFrame的问题求助

解决DataFrame合并对齐问题的两种方法

你用pd.concat出现对齐错误的核心原因是:这个方法默认按DataFrame的行索引拼接,但你真正用来关联三个表的是Index列,不是行索引,所以Year列和VarA/VarB才会错位。

下面是两种直接可行的解决方式:

方法一:用merge按关联列合并

先把带VarA、VarB的表合并,再和带Year的表基于Index列关联,最后调整行索引:

# 合并df2和df3,以Index列为关联键
df_var = pd.merge(df2, df3, on='Index')
# 再和df1合并,保留df1的所有行(按需调整how参数)
final_df = pd.merge(df1, df_var, on='Index', how='left')
# 将行索引重置为0、1
final_df = final_df.reset_index(drop=True)

方法二:统一索引后再concat

先把所有表的行索引替换成Index列的值,让concat能按正确维度对齐:

# 把三个表的行索引都替换为各自的Index列值
df1 = df1.set_index('Index')
df2 = df2.set_index('Index')
df3 = df3.set_index('Index')
# 按列拼接,此时会基于统一后的索引对齐所有列
final_df = pd.concat([df1, df2, df3], axis=1)
# 重置行索引为0、1
final_df = final_df.reset_index(drop=True)

如果你的Index列是唯一且一一对应的,两种方法都能得到你想要的结果。要是存在缺失数据,可以把merge里的how参数改成left来保留df1的全部行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 07:41:24