如何将含多级分类的Pandas DataFrame转换为层级化展示表格?
Pandas实现层级化表格展示
原始数据集
import pandas as pd df = pd.DataFrame({ 'Category': ['A', 'A', 'A', 'B', 'B', 'B', 'B'], 'SubCategory': ['A01', 'A02', 'A02', 'B01', 'B01', 'B02', 'B03'], 'SubSubCategory': ['AA01', 'AA02', 'AA03', 'BB01', 'BB02', 'BB03', 'BB04'], 'ProductID': [1001, 1002, 1003, 1004, 1005, 1006, 1007] })
原始输出
| Category | SubCategory | SubSubCategory | ProductID |
|---|---|---|---|
| A | A01 | AA01 | 1001 |
| A | A02 | AA02 | 1002 |
| A | A02 | AA03 | 1003 |
| B | B01 | BB01 | 1004 |
| B | B01 | BB02 | 1005 |
| B | B02 | BB03 | 1006 |
| B | B03 | BB04 | 1007 |
需求
将上述数据转换为层级化合并单元格的表格样式(相同上级分类自动合并,形成嵌套层级)
解决方案
通过Pandas的多级索引和样式设置实现:
# 设置多级索引,按分类层级排序 hierarchical_df = df.set_index(['Category', 'SubCategory', 'SubSubCategory']) # 配置表格样式,实现单元格合并与层级缩进 styled_table = hierarchical_df.style.set_table_styles([ # 基础样式 {'selector': 'th, td', 'props': [('border', '1px solid #ccc'), ('text-align', 'left')]}, # 层级0(Category)样式:加粗下边框,居中对齐 {'selector': '.level0', 'props': [('border-bottom', '2px solid #000'), ('vertical-align', 'middle'), ('font-weight', 'bold')]}, # 层级1(SubCategory)样式:缩进,下边框 {'selector': '.level1', 'props': [('border-bottom', '1px solid #000'), ('padding-left', '20px')]}, # 层级2(SubSubCategory)样式:更深缩进 {'selector': '.level2', 'props': [('padding-left', '40px')]} ]) # 隐藏默认索引列,只保留层级化的表头和数据 styled_table = styled_table.hide(axis='index') # 显示表格(Jupyter环境中直接运行即可查看效果) styled_table
效果说明
运行上述代码后,相同的Category和SubCategory会自动合并单元格,同时通过缩进区分层级,完全匹配需求的展示样式。若需要导出为HTML文件,可使用styled_table.to_html('hierarchical_table.html')保存。
内容的提问来源于stack exchange,提问作者Swaroop Mg
相关产品推荐
相关产品推荐

