如何在不合并键的情况下将两个DataFrame含表头纵向拼接?
实现两个DataFrame按行堆叠(保留第二个的表头行、空缺列填充NaN)
核心思路
先将第二个DataFrame(df2)的表头单独转为一行数据,再将这行表头与df2的原始数据合并,最后把处理后的df2整体堆叠到第一个DataFrame(df1)下方,Pandas会自动为缺失的列填充NaN。
步骤与代码示例
- 准备示例数据
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'] })
- 将df2的表头转为一行数据
# 把df2的列名转成一行DataFrame,列名与df2保持一致 header_row = pd.DataFrame([df2.columns.tolist()], columns=df2.columns)
- 合并表头行与df2原始数据
# 把表头行放在df2数据的最上方,重置索引避免重复 df2_with_header = pd.concat([header_row, df2], ignore_index=True)
- 堆叠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
相关产品推荐
相关产品推荐

