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

如何合并DataFrame中的单元格并转换为指定目标格式?

DataFrame 合并单元格导出实现方案

实现步骤

  • 先准备好你的原始DataFrame,提前确认哪些列需要做单元格合并,注意如果同列相同值不是连续排列的,先按对应列排序,保证相同值连续,否则合并结果不符合预期
  • 借助openpyxl作为Excel读写引擎,因为pandas原生不支持直接导出合并单元格的Excel,需要操作Excel工作表对象完成合并逻辑
  • 逐列遍历需要合并的字段,识别连续重复值的行范围,对范围内的单元格执行合并操作,最后统一设置对齐样式优化展示效果

可直接复用的代码

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

# ========== 替换成你自己的DataFrame即可 ==========
# 示例数据匹配常规分组类表格结构,实际使用时替换成你的df
df = pd.DataFrame({
    "大区": ["华东", "华东", "华东", "华北", "华北", "华南"],
    "省份": ["江苏", "江苏", "浙江", "北京", "天津", "广东"],
    "城市": ["南京", "苏州", "杭州", "北京", "天津", "广州"],
    "销售额": [1200, 1500, 1800, 2000, 900, 2200]
})

# 导出基础无合并的Excel文件
save_path = "合并单元格结果.xlsx"
df.to_excel(save_path, index=False, engine="openpyxl")

# ========== 执行单元格合并逻辑 ==========
wb = load_workbook(save_path)
ws = wb.active

# 配置需要合并的列:Excel列号从1开始计数,示例合并第1列(大区)、第2列(省份),按需增减
merge_columns = [1, 2]
# 配置单元格居中对齐样式
align_style = Alignment(horizontal="center", vertical="center")

for col_idx in merge_columns:
    merge_start_row = 2  # 第1行是表头,数据从第2行开始
    base_value = ws.cell(row=merge_start_row, column=col_idx).value
    
    # 遍历所有数据行,多遍历1行用于处理最后一段合并区间
    for row_idx in range(3, ws.max_row + 2):
        current_value = ws.cell(row=row_idx, column=col_idx).value if row_idx <= ws.max_row else None
        if current_value != base_value:
            # 区间长度大于1才需要合并
            if row_idx - 1 > merge_start_row:
                ws.merge_cells(
                    start_row=merge_start_row,
                    start_column=col_idx,
                    end_row=row_idx - 1,
                    end_column=col_idx
                )
            # 更新下一段合并区间的起始位置和基准值
            merge_start_row = row_idx
            base_value = current_value

# 全表设置居中对齐
for row in ws.iter_rows():
    for cell in row:
        cell.alignment = align_style

# 保存最终结果
wb.save(save_path)

说明

  • 如果你的需求是导出带合并单元格的HTML而非Excel,可以在df.to_html()生成的表格代码基础上,给连续重复值对应的<td>标签添加rowspan属性实现,逻辑和上述Excel合并逻辑一致
  • 代码运行前需要确保已经安装依赖,执行pip install pandas openpyxl安装即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:39:19