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

如何使用pandas.styler格式化索引文本数据生成自定义表格

问题说明

需要在Jupyter Notebook中基于pandas DataFrame生成符合排版要求的表格,替代原有的Excel/Word表格制作环节,核心诉求包括调整索引文本样式、自定义列宽、控制文本对齐规则、长文本自动换行,原尝试的样式配置代码未生效。

修正后可直接运行的代码

import pandas as pd
import numpy as np
from faker import Faker

# 测试数据生成
faker = Faker()
Faker.seed(4321)
dat = pd.DataFrame(
{'WorkFlow':[ 'Macro Economic Changes'
             ,'Industry Changes'
             ,'Federal Legislative Changes'
             ,'Model Development'
             ,'Model Validation'
             ,'Model Production Testing'
             ,'Market Research'
             ,'Marketing Plan'
             ,'Marketing Material'
             ,'Client Solicitation']})

choices    = ['Marketing','Management','Research']
conditions = [dat['WorkFlow'].str.find('Market')>-1
             ,dat['WorkFlow'].str.find('Change')>-1
             ,dat['WorkFlow'].str.find('Model' )>-1]
dat['Dept']= np.select(conditions,choices,'BusinessDev')
dat['AssignedAssociate'] =dat['WorkFlow'].apply(lambda x: faker.name())
dat['StatusReport']=np.array(['Green']*5+['Yellow']+['Green']*3+['Red'])
dat['StatusReport']= dat['StatusReport']+": Due to ...sdf asdfasf asdfasdfas asdgfasdfasdfsadfsadf. asdfsafsaf asdfsafsadf"

dat.set_index(['Dept','WorkFlow'],inplace=True)

# 样式配置
dat.style.set_table_styles([
    # 全局表格布局配置,开启固定布局后自定义列宽才会生效
    {'selector': 'table', 'props': [('table-layout', 'fixed'), ('width', '100%')]},
    # 索引表头样式
    {'selector': 'th.index_name', 'props': [
        ('text-align', 'center'),
        ('font-weight', 'bold'),
        ('font-style', 'italic')
    ]},
    # 行索引单元格通用样式
    {'selector': 'th.row_heading', 'props': [
        ('text-align', 'left'),
        ('vertical-align', 'top'),
        ('overflow-wrap', 'break-word'),
        ('padding', '4px 8px')
    ]},
    # 第一级行索引列宽
    {'selector': 'th.row_heading.level0', 'props': [('width', '15%')]},
    # 第二级行索引列宽
    {'selector': 'th.row_heading.level1', 'props': [('width', '25%')]},
    # 列标题样式
    {'selector': 'th.col_heading', 'props': [
        ('text-align', 'center'),
        ('font-weight', 'bold'),
        ('background-color', '#f0f0f0')
    ]},
    # 普通数据单元格通用样式
    {'selector': 'td', 'props': [
        ('text-align', 'left'),
        ('vertical-align', 'top'),
        ('overflow-wrap', 'break-word'),
        ('padding', '4px 8px')
    ]},
    # 自定义AssignedAssociate列宽
    {'selector': 'td.col0', 'props': [('width', '20%')]},
    # 自定义StatusReport列宽
    {'selector': 'td.col1', 'props': [('width', '40%')]}
])

样式调整说明

  • 各列的宽度百分比可根据实际需求修改,总占比不超过100%即可
  • 可自行补充其他CSS属性实现更多排版效果,比如边框、背景色、字体大小等,符合标准CSS语法即可生效
  • 若需要合并第一级索引的相同内容单元格,可在样式配置末尾追加.set_sticky(axis="index")实现多级索引的分层展示效果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 14:15:02