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

如何将pandas DataFrame导出Excel并实现指定列的合并功能

实现pandas导出Excel列合并的解决方法

你之前的写法报错是因为Python原生字典不允许重复键,赋值时后定义的同键值会直接覆盖前面的内容,无法构造出需要的多列结构。要实现列合并的导出效果,有两种常用方案:

方案1:使用MultiIndex多层列索引

pandas原生支持多层列索引,导出Excel时默认会自动合并同层级的重复表头单元格,适合层级规则统一的场景:

import pandas as pd

# 构造多层列索引,第一层级为合并显示的动物分类,第二层级为子列标识
columns = pd.MultiIndex.from_tuples(
    [
        ("", "animal"),
        ("horse", "color_1"),
        ("horse", "color_2"),
        ("dog", "color_1"),
        ("dog", "color_2"),
    ]
)

# 构造对应数据
data = [["color of fur", "black", "white", "grey", "black"]]
df = pd.DataFrame(data, columns=columns)

# 导出Excel,默认merge_cells=True会自动合并同层级重复列头
df.to_excel("output.xlsx", index=False)

方案2:导出后手动操作Excel单元格合并

如果需要更灵活的合并规则,可导出普通DataFrame后用openpyxl手动合并指定单元格:

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

# 构造普通结构的DataFrame
df = pd.DataFrame({
    "animal": ["color of fur"],
    "col1": ["black"],
    "col2": ["white"],
    "col3": ["grey"],
    "col4": ["black"]
})

# 首次导出基础数据
df.to_excel("output.xlsx", index=False)

# 加载文件操作单元格
wb = load_workbook("output.xlsx")
ws = wb.active

# 合并第一行的B1-C1单元格设置为horse
ws.merge_cells("B1:C1")
ws["B1"] = "horse"
# 合并第一行的D1-E1单元格设置为dog
ws.merge_cells("D1:E1")
ws["D1"] = "dog"

# 合并单元格设置居中对齐
for cell in ["B1", "D1"]:
    ws[cell].alignment = Alignment(horizontal="center", vertical="center")

# 保存修改后的文件
wb.save("output.xlsx")

两种方案均可实现预期的列合并效果:多层索引方案适配规则化的多层级表头场景,无需手动计算合并坐标;手动合并方案适配自定义程度高的特殊场景,可灵活控制合并范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 02:48:01