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

列未对齐时合并多个pandas DataFrame的问题

解决DataFrame纵向合并的问题

嘿,我来帮你搞定这个DataFrame合并的事儿!

首先得说清楚你之前遇到的问题为啥没得到预期结果:

  • 当你设置axis=1时,pd.concat是横向拼接,会按索引把三个DataFrame的列并排在一起,结果肯定不是你要的纵向堆叠效果;
  • 用默认的axis=0(纵向拼接)时,其实逻辑是对的,但大概率是没加ignore_index=True参数,导致合并后的索引重复(比如df1、df2的索引都是0、1,df3的索引是0,合并后索引会是0、1、0、1、0),可能你误以为结果不符合预期。

正确的合并代码

先确认你的三个DataFrame定义是正确的(比如df3是一行数据):

import pandas as pd

# 定义你的三个DataFrame
df1 = pd.DataFrame({'A': [1, 2], 'B': [1, 2], 'C': [1, 2]})
df2 = pd.DataFrame({'A': [3, 4], 'B': [3, 4], 'C': [3, 4]})
df3 = pd.DataFrame({'A': [5], 'B': [5]})

然后用带ignore_index=True的pd.concat就能得到你要的结果:

combined_df = pd.concat([df1, df2, df3], ignore_index=True)

运行后得到的结果完全符合你的预期:

A  B    C
0  1  1  1.0
1  2  2  2.0
2  3  3  3.0
3  4  4  4.0
4  5  5  NaN

原理说明

  • pd.concat默认axis=0,会按行纵向堆叠DataFrame;
  • 当拼接的DataFrame列数不一致时,缺失的列会自动填充NaN,正好匹配你df3缺少C列的需求;
  • ignore_index=True会重置合并后的索引,让它从0开始连续编号,避免原索引重复的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:26:22