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

如何在Pandas中创建多层级表头并合并对应表头单元格

实现方案

第一步:创建双层多级列索引

你可以直接通过Pandas的MultiIndex接口构造双层表头,示例代码如下:

import pandas as pd

# 模拟你现有结构的DataFrame
df = pd.DataFrame({
    'Number of words': ['样本1', '样本2', '样本3'],
    '1': [12, 25, 18],
    '2': [22, 37, 29],
    '4': [31, 48, 36]
})

# 构造双层列头,元组顺序为(上层表头名, 下层表头名)
new_cols = pd.MultiIndex.from_tuples(
    [
        ("", "Number of words"),  # 第一列上层表头留空
        ("worker/node", "1"),
        ("worker/node", "2"),
        ("worker/node", "4")
    ]
)

# 替换原有列头
df.columns = new_cols

运行后你就可以得到双层结构的表头,1/2/4三个列会共享上层表头worker/node。

第二步:实现单元格合并

根据你使用的场景,有两种常见的实现方式:

  • 场景1:导出到Excel文件
    可以借助openpyxl处理Excel单元格合并,代码如下:
from openpyxl import load_workbook

# 先将DataFrame导出到Excel,保留索引并设置索引标签为Index
df.to_excel("output.xlsx", index=True, index_label="Index")

# 打开文件处理合并
wb = load_workbook("output.xlsx")
ws = wb.active

# 合并左上角的两个单元格:第一行空白格和第二行的Index单元格
ws.merge_cells("A1:A2")
# 合并上层表头的worker/node对应三个单元格
ws.merge_cells("B1:D1")

# 保存修改
wb.save("output.xlsx")
  • 场景2:Jupyter Notebook中直接显示
    可以用Pandas的Styler对象设置样式实现视觉上的合并效果:
df.style.set_table_styles([
    # 处理worker/node上层表头的边框,实现合并视觉效果
    {"selector": "th.col_heading.level0.col1", "props": [("border-right", "none")]},
    {"selector": "th.col_heading.level0.col2", "props": [("border-left", "none"), ("border-right", "none")]},
    {"selector": "th.col_heading.level0.col3", "props": [("border-left", "none")]},
    # 处理Index单元格跨两行显示
    {"selector": "th.index_name.level0", "props": [("rowspan", "2")]}
])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:51:03