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

如何合并不同长度的Pandas DataFrame并透视导出至Excel?

合并多结构Pandas DataFrame并生成指定格式导出Excel

我通过多个函数生成了多个不同长度的Pandas DataFrame,这些DataFrame的Header列包含不同的标识(如L1、L5等),数值列的名称也各不相同(Val1、Val2到Val9)。需要将这些DataFrame合并为一个统一的网格结构,缺失的数值用0填充,最终导出到Excel文件。

示例代码

import pandas as pd

# 第一个DataFrame示例
data1 = {'Header':['L1','L2','L3'], 
         'Val1':[float(100),float(200),float(300)],
         'Val2':[float(400),float(500),float(600)], 
         'Val3':[float(700),float(800),float(900)]}
data1_summary = pd.DataFrame(data=data1)

# 第二个DataFrame示例
data2 = {'Header':['L5','L6'], 
         'Val5':[float(1000),float(1100)],
         'Val6':[float(1300),float(1400)]}
data2_summary = pd.DataFrame(data=data2)

# 第三个DataFrame示例
data3 = {'Header':['L7','L8','L9','L10'], 
         'Val7':[float(1900),float(2000),float(2100),float(2200)],
         'Val8':[float(2900),float(2300),float(2400),float(2800)], 
         'Val9':[float(3500),float(3600),float(3700),float(3900)]}
data3_summary = pd.DataFrame(data=data3)

期望输出格式

Val1Val2Val3Val5Val6Val7Val8Val9
L110040070000000
L220050080000000
L330060090000000
L500010001300000
L600011001400000
L700000190029003500
L800000200023003600
L900000210024003700
L1000000220028003900

解决方案

步骤说明

  1. 收集DataFrame:将所有生成的DataFrame存入列表,便于批量处理。
  2. 合并DataFrame:用pd.concat按行合并,指定join='outer'保留所有列,同时将Header设为行索引,确保每个标识对应唯一行。
  3. 填充缺失值:将合并后出现的空值(NaN)替换为0,匹配期望格式。
  4. 导出到Excel:使用to_excel方法将最终结果保存为Excel文件。

完整代码

import pandas as pd

# 生成示例DataFrame(实际场景中由函数生成)
data1 = {'Header':['L1','L2','L3'], 
         'Val1':[float(100),float(200),float(300)],
         'Val2':[float(400),float(500),float(600)], 
         'Val3':[float(700),float(800),float(900)]}
data1_summary = pd.DataFrame(data=data1)

data2 = {'Header':['L5','L6'], 
         'Val5':[float(1000),float(1100)],
         'Val6':[float(1300),float(1400)]}
data2_summary = pd.DataFrame(data=data2)

data3 = {'Header':['L7','L8','L9','L10'], 
         'Val7':[float(1900),float(2000),float(2100),float(2200)],
         'Val8':[float(2900),float(2300),float(2400),float(2800)], 
         'Val9':[float(3500),float(3600),float(3700),float(3900)]}
data3_summary = pd.DataFrame(data=data3)

# 收集所有DataFrame到列表
df_list = [data1_summary, data2_summary, data3_summary]

# 合并DataFrame并设置Header为索引
merged_df = pd.concat([df.set_index('Header') for df in df_list], axis=0, join='outer')

# 填充缺失值为0
final_df = merged_df.fillna(0)

# 导出到Excel
final_df.to_excel('merged_data.xlsx')

# 可选:打印查看结果
print(final_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 10:36:08