如何合并表头长度不同的两个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)
解决方案
正确的处理步骤如下:
- 生成包含df2表头的临时行,匹配df1的列数(第三列填充空字符串)
- 修改df2的列名,使其与df1的列名一致,确保结构对齐
- 按顺序合并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
相关产品推荐
相关产品推荐

