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
相关产品推荐
相关产品推荐

