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

如何使用Python将嵌套结构数据转换为指定格式的Excel表格

解决方案

实现思路

  • 先将嵌套结构的原始数据集扁平化,每一行对应一组二级分类的完整数据
  • 借助pandas生成标准表格结构,使用openpyxl处理相同一级分类的单元格合并,最终输出符合要求的Excel文件

依赖安装

运行前先执行命令安装所需库:
pip install pandas openpyxl

完整可运行代码

import pandas as pd
from openpyxl import load_workbook

# ---------------------- 替换为你的实际数据 ----------------------
raw_data = [
    "Name1 : Name1 - {'Name1.1': ('data1', 'data2', 'data3'), 'Name1.2': ('data1', 'data2', 'data3')}",
    "Name2 : Name2 - {'Name2.1': ('data1', 'data2', 'data3')}",
    "Name3 : Name3 - {'Name3.1': ('data1', 'data2', 'data3'), 'Name3.2': ('data1', 'data2', 'data3'), 'Name3.3': ('data1', 'data2', 'data3')}"
]
# -------------------------------------------------------------

# 1. 解析原始数据,生成扁平化表格
flat_data = []
for line in raw_data:
    # 拆分一级分类和后续字典内容
    first_level, dict_part = line.split(" - ", 1)
    first_level_name = first_level.split(" : ")[0].strip()
    # 把字典字符串转成实际字典对象
    second_level_dict = eval(dict_part)
    # 遍历二级分类生成行数据
    for second_level_name, data_tuple in second_level_dict.items():
        flat_data.append([
            first_level_name,
            second_level_name,
            data_tuple[0],
            data_tuple[1],
            data_tuple[2]
        ])

# 2. 生成DataFrame,设置列名
df = pd.DataFrame(flat_data, columns=["一级分类", "二级分类", "数据1", "数据2", "数据3"])

# 3. 写入Excel文件
output_path = "转换结果.xlsx"
df.to_excel(output_path, index=False, engine="openpyxl")

# 4. 处理一级分类列的单元格合并
wb = load_workbook(output_path)
ws = wb.active

# 统计每个一级分类的起始行和结束行(Excel行号从2开始,因为第1行是表头)
current_first_level = ws.cell(row=2, column=1).value
start_row = 2
for row in range(3, ws.max_row + 1):
    cell_value = ws.cell(row=row, column=1).value
    if cell_value != current_first_level:
        # 不是同一个一级分类,合并前面的区间
        if start_row < row - 1:
            ws.merge_cells(start_row=start_row, start_column=1, end_row=row-1, end_column=1)
        current_first_level = cell_value
        start_row = row
# 处理最后一个一级分类的合并
if start_row < ws.max_row:
    ws.merge_cells(start_row=start_row, start_column=1, end_row=ws.max_row, end_column=1)

# 保存修改后的Excel
wb.save(output_path)
print(f"转换完成,文件已保存至{output_path}")

注意事项

  • 如果你的原始数据是从文件读取的,可以把raw_data替换为文件读取的每行内容即可
  • 如果你的数据列数不止3个,修改DataFrame的列名,以及遍历data_tuple的逻辑即可
  • 代码中使用eval转换字典字符串,确保你的原始数据格式和示例一致即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 12:24:01