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

如何正确合并/拼接列数不同的两个DataFrame?

解决列数不同的DataFrame拼接问题

首先要明确:你需要的是把两个表格上下堆叠(纵向合并),而不是按列匹配的横向合并,所以pd.merge不适用——它是用来做类似数据库的关联匹配,不是堆叠操作。

正确的纵向堆叠方法

使用pd.concat时,加上ignore_index=True参数重置索引,就能得到符合预期的结果:

import pandas as pd

# 你的原始数据
a = [100, 66, 80]
b = [26, 53, 45]
c = [94, 100, 32]
df1 = pd.DataFrame([a,b,c], columns = ['A', 'C', 'D'])

a = [88, 94, 21, 39]
b = [82, 79, 19, 87]
c = [20, 10, 92, 13]
df2 = pd.DataFrame([a,b,c], columns = ['A', 'B', 'C', 'D'])

# 正确的拼接代码
result = pd.concat([df1, df2], join='outer', ignore_index=True)
print(result)

最终输出结果

A     B    C    D
0  100   NaN   26   94
1   66   NaN   53  100
2   80   NaN   45   32
3   88  82.0   20   10
4   94  79.0   19   92
5   21  19.0   87   13
6   39  87.0   13   NaN

为什么之前的尝试不符合预期?

  • 你之前用pd.concat([df1, df2], join='outer')时,没加ignore_index=True,结果会保留原数据的索引(df1索引是0、1、2,df2索引也是0、1、2、3),导致索引重复,看起来像没拼接对,但其实数据是正确的,只是索引格式有问题。
  • pd.merge是按共同列(比如A、C、D)做值匹配,会把两个表格中列值相同的行合并到一行,这和你要的“上下堆叠”是完全不同的操作,所以结果自然不对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 05:43:33