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

是否有Python函数可为交叉表添加额外层级,实现类Excel分层表格?

实现Excel风格的分层汇总表格

你可以用Pandas的分组统计+多级索引+样式设置来实现这种分层表格效果,无需拆分多个DataFrame,直接在单个DataFrame内构建层级并匹配Excel样式。以下是具体实现步骤:

1. 构建数据并生成分层统计结构

先将你的数据导入Pandas DataFrame,然后按Col3→Col2→Col1的层级分组统计记录数,生成带多级索引的交叉表:

import pandas as pd

# 构造你的原始数据
data = [
    ["A", "Red", "Cheetah"], ["A", "Red", "Cheetah"], ["A", "Red", "Cheetah"],
    ["A", "Blue", "Cheetah"], ["A", "Blue", "Cheetah"], ["A", "Blue", "Cheetah"],
    ["A", "Blue", "Cheetah"], ["A", "Blue", "Cheetah"], ["B", "Blue", "Cheetah"],
    ["B", "Blue", "Cheetah"], ["C", "Blue", "Cheetah"], ["C", "Blue", "Cheetah"],
    ["C", "Blue", "Lion"], ["C", "Blue", "Lion"], ["C", "Orange", "Lion"],
    ["C", "Orange", "Lion"], ["A", "Orange", "Lion"], ["A", "Orange", "Lion"],
    ["A", "Orange", "Lion"], ["A", "Orange", "Lion"], ["A", "Red", "Lion"],
    ["A", "Red", "Lion"], ["A", "Red", "Bear"], ["A", "Red", "Bear"],
    ["A", "Red", "Bear"], ["B", "Red", "Bear"], ["B", "Green", "Bear"],
    ["B", "Green", "Bear"], ["C", "Green", "Bear"], ["C", "Green", "Bear"],
    ["C", "Green", "Bear"]
]

df = pd.DataFrame(data, columns=["Col1", "Col2", "Col3"])

# 按层级分组统计,生成多级索引的交叉表
count_df = df.groupby(["Col3", "Col2", "Col1"]).size().unstack(fill_value=0)
count_df = count_df.reset_index().set_index(["Col3", "Col2"])

这段代码会生成一个以Col3(动物类型)为一级索引、Col2(颜色)为二级索引的DataFrame,列对应Col1的分类(A/B/C),值为对应组合的记录数量,完全匹配你需要的分层结构。

2. 匹配Excel样式的可视化处理

如果需要还原Excel中合并同类单元格的视觉效果,可以通过以下方式实现:

  • 导出Excel时,启用merge_cells=True参数,自动合并重复的层级单元格;
  • 若需要网页端展示,用Pandas的Styler工具设置样式:
# 导出为Excel,自动合并层级单元格
count_df.to_excel("hierarchical_table.xlsx", merge_cells=True)

# (可选)网页端样式设置,模拟Excel合并效果
def style_table(styler):
    # 设置层级样式,区分一级/二级索引
    styler.set_table_styles([
        {'selector': 'th.level0', 'props': [('background-color', '#f0f0f0'), ('font-weight', 'bold')]},
        {'selector': 'th.level1', 'props': [('padding-left', '20px')]},
        {'selector': 'td, th', 'props': [('border', '1px solid #ccc')]}
    ])
    # 隐藏重复的索引标签
    styler.hide(axis='index', names=True)
    return styler

styled_table = count_df.style.pipe(style_table)
styled_table.to_html("hierarchical_table.html")

核心函数说明

  • groupby(["Col3", "Col2", "Col1"]).size():按指定层级分组统计频次,是构建分层交叉表的核心;
  • unstack(fill_value=0):将分组后的行索引转为列,生成交叉表结构;
  • set_index(["Col3", "Col2"]):构建多级行索引,实现分层展示;
  • to_excel(merge_cells=True):导出Excel时自动合并重复的层级单元格,完全还原目标样式。

无需额外特殊函数,Pandas自带的分组、索引操作和导出工具就能满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:31:09