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

Python Pandas:无匹配列时按顺序拼接DataFrame

解决两个DataFrame按指定形式拼接的问题

要实现你要的拼接效果,核心是先给两个DataFrame补全对方的列(值为空),再按行拼接,步骤如下:

  1. 先创建示例DataFrame:
import pandas as pd

df1 = pd.DataFrame({'A': [1, 3, 5], 'B': [2, 4, 6]})
df2 = pd.DataFrame({'C': [7, 9, 2, 4], 'D': [8, 10, 3, 5]})
  1. 给df1补充C、D列,值设为缺失值;给df2补充A、B列,同样设为缺失值,并调整列顺序和df1一致:
# 给df1添加C、D列
df1[['C', 'D']] = pd.NA
# 给df2添加A、B列并调整列顺序
df2[['A', 'B']] = pd.NA
df2 = df2[['A', 'B', 'C', 'D']]
  1. 用pd.concat按行拼接两个处理后的DataFrame,同时重置索引:
result = pd.concat([df1, df2], ignore_index=True)
  1. 如果希望显示时缺失值为空字符串(和你预期的格式一致),可以用fillna('')处理后打印:
print(result.fillna(''))

执行后输出结果如下:

A  B  C   D
0  1  2      
1  3  4      
2  5  6      
3        7   8
4        9  10
5        2   3
6        4   5

为什么直接用concat/join不行?

  • 直接pd.concat([df1, df2])会自动对齐列,但df1的C、D列和df2的A、B列会显示为NaN,若不处理显示格式,和你要的样式有差异;
  • join方法是基于索引进行列合并,不是按行上下拼接,完全不符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:15:46