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

Python按层级拆分遍历数据并导出为Excel的实现方法

Python实现四级品类层级拆分归类并导出Excel

前置依赖安装

先安装数据处理和Excel导出需要的第三方库,执行命令:
pip install pandas openpyxl

核心实现逻辑

处理逻辑严格按照部门 > 品类组 > 品类 > 子品类的四级维度做遍历排序、去重归类,导出的Excel会自动合并同层级相同值的单元格,匹配预期的层级展示效果。
完整可运行代码如下:

import pandas as pd
from openpyxl import Workbook
from openpyxl.styles import Alignment

# 读取原始数据源,可替换为csv读取接口pd.read_csv()
raw_df = pd.read_excel("你的原始数据文件路径.xlsx")

# 校验必填层级字段是否存在
level_columns = ["部门", "品类组", "品类", "子品类"]
if not set(level_columns).issubset(raw_df.columns):
    raise ValueError("原始数据缺少四级品类必填字段,请检查输入数据")

# 按四级层级维度排序归类
sorted_result = raw_df.sort_values(by=level_columns, na_position="last").reset_index(drop=True)

# 初始化Excel工作簿
wb = Workbook()
ws = wb.active
ws.title = "品类层级拆分结果"

# 写入表头
for col_idx, col_name in enumerate(sorted_result.columns, start=1):
    ws.cell(row=1, column=col_idx, value=col_name).alignment = Alignment(horizontal="center", vertical="center")

# 写入全部结构化数据
for row_idx, row_content in enumerate(sorted_result.itertuples(index=False), start=2):
    for col_idx, cell_val in enumerate(row_content, start=1):
        ws.cell(row=row_idx, column=col_idx, value=cell_val)

# 对四个层级列做相同值合并,还原层级展示效果
for col in [1, 2, 3, 4]:
    merge_start_row = 2
    last_cell_val = ws.cell(row=2, column=col).value
    for current_row in range(3, ws.max_row + 2):
        current_val = ws.cell(row=current_row, column=col).value if current_row <= ws.max_row else None
        if current_val != last_cell_val:
            if current_row - merge_start_row > 1:
                ws.merge_cells(
                    start_row=merge_start_row,
                    start_column=col,
                    end_row=current_row - 1,
                    end_column=col
                )
                ws.cell(row=merge_start_row, column=col).alignment = Alignment(horizontal="center", vertical="center")
            merge_start_row = current_row
            last_cell_val = current_val

# 导出最终文件
wb.save("品类层级拆分结果.xlsx")

可选简化方案

如果不需要合并单元格的层级展示效果,排序完成后可以直接用pandas一行代码导出结构化文件:
sorted_result.to_excel("品类层级拆分结果_无合并.xlsx", index=False)

适配说明

  • 如果原始输入是嵌套JSON/字典格式的非结构化数据,遍历的时候递归提取四个层级的字段值,先转换成扁平结构化表再走后续排序导出逻辑即可
  • 代码默认保留原始数据里除四级层级外的其他业务字段,不需要额外做字段裁剪

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 08:51:59