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

如何在不合并键的情况下将两个DataFrame含表头纵向拼接?

实现两个DataFrame按行堆叠(保留第二个的表头行、空缺列填充NaN)

核心思路

先将第二个DataFrame(df2)的表头单独转为一行数据,再将这行表头与df2的原始数据合并,最后把处理后的df2整体堆叠到第一个DataFrame(df1)下方,Pandas会自动为缺失的列填充NaN。

步骤与代码示例

  1. 准备示例数据
import pandas as pd

# 定义原始df1
df1 = pd.DataFrame({
    'Key1': [1, 2, 3],
    'Key2': ['a', 'b', 'c'],
    'Key3': [True, False, True],
    'Key4': [10.5, 20.3, 30.1],
    'Key5': ['x', 'y', 'z']
})

# 定义原始df2
df2 = pd.DataFrame({
    'Key1': [4, 5],
    'Key4': [40.2, 50.7],
    'Key7': ['m', 'n']
})
  1. 将df2的表头转为一行数据
# 把df2的列名转成一行DataFrame,列名与df2保持一致
header_row = pd.DataFrame([df2.columns.tolist()], columns=df2.columns)
  1. 合并表头行与df2原始数据
# 把表头行放在df2数据的最上方,重置索引避免重复
df2_with_header = pd.concat([header_row, df2], ignore_index=True)
  1. 堆叠df1与带表头的df2
# 按行合并两个DataFrame,缺失列自动填充NaN,sort=False保留原始列顺序(可选)
final_df = pd.concat([df1, df2_with_header], ignore_index=True, sort=False)

最终效果说明

  • df1的所有行保持不变,Key7列全为NaN
  • df2的表头行作为单独一行出现在df1之后,Key2、Key3、Key5列对应位置为NaN
  • df2的原始数据行紧跟表头行,同样为缺失列填充NaN

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:30:04