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

如何合并表头长度不同的两个DataFrame,且将第二个表头转为行?

合并不同表头长度的DataFrame并添加第二个DataFrame的表头作为行

需求说明

需要合并两个列数不同的DataFrame,同时将第二个DataFrame的表头作为单独一行插入到合并后的结果中。

原始数据

  • df1:
import pandas as pd

df1 = pd.DataFrame({'A': [1, 2], 'B': [2, 3], 'C': [3, 4]})
print(df1)

输出:

A  B  C
0  1  2  3
1  2  3  4
  • df2:
df2 = pd.DataFrame({'D': [34, 'e'], 'E': ['rt', 'rt']})
print(df2)

输出:

D   E
0  34  rt
1   e  rt

预期输出

df = pd.DataFrame({'A': [1, 2,'D',34,'e'], 'B': [2, 3,'E','rt','rt'], 
                   'C': [3, 4,'','','']})
print(df)

输出:

A   B  C
0   1   2  3
1   2   3  4
2   D   E   
3  34  rt   
4   e  rt   

尝试过的无效方法

  • 方法1:直接concat,无论按行还是按列合并都无法得到预期结果
df = pd.concat([df1, df2], axis = 0)  # 或axis=1
  • 方法2:尝试生成表头行但处理有误
df1_header = pd.DataFrame([df2.columns], columns=df1.columns)
df2.columns = df1.columns 
result = pd.concat([df1_header, df1, df2], ignore_index=True)

解决方案

正确的处理步骤如下:

  1. 生成包含df2表头的临时行,匹配df1的列数(第三列填充空字符串)
  2. 修改df2的列名,使其与df1的列名一致,确保结构对齐
  3. 按顺序合并df1、表头行、df2,并重置索引

具体代码:

import pandas as pd

# 原始数据
df1 = pd.DataFrame({'A': [1, 2], 'B': [2, 3], 'C': [3, 4]})
df2 = pd.DataFrame({'D': [34, 'e'], 'E': ['rt', 'rt']})

# 生成df2的表头行,匹配df1的列数
header_row = pd.DataFrame([list(df2.columns) + ['']], columns=df1.columns)

# 修改df2的列名为df1的列名
df2.columns = df1.columns

# 合并所有部分
final_df = pd.concat([df1, header_row, df2], ignore_index=True)

print(final_df)

运行后输出:

A   B  C
0   1   2  3
1   2   3  4
2   D   E   
3  34  rt   
4   e  rt   

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:03:34