如何使用pandas.styler格式化索引文本数据

2024-06-28 10:55:43 发布

您现在位置:Python中文网/ 问答频道 /正文

Looking to create a table like this in Jupiter Notebook based on a pandas DataFrame.虽然styler在如何格式化数据方面做了很多工作,但在excel/word中通常做的很多工作是格式化文本以使其快速可读。我的目标是将excel/word完全从流程中删除,并使用pandas styler总结整个工作流。我发现关于如何格式化索引中数据的文本值/列宽等的文档非常有限。我不熟悉HTML/CSS,我正在学习。我所尝试的似乎对桌子的显示并没有影响。这是我的数据和我尝试过的一些代码:

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

dat.style.set_table_styles(
#     { 'selector': 'th.col_heading'
#      , 'props'  : 'text-align: center;'                   },   
    {'selector' : 'th.index_name.'           
     , 'props'  : [('text-align','center')
                   ,('font-weight','bold')
                   ,('font-style','italic')
                   ,('width','2%')
                   ,('overflow-wrap','break-word')]} )

Tags: to数据pandasmodeltablefindworkflowmarketing
1条回答
网友
1楼 · 发布于 2024-06-28 10:55:43

单元格合并仅适用于多索引:

例如:

df = pd.DataFrame(index=pd.MultiIndex.from_product([["Unit 1", "Unit 2"], ["Some Value", "Another"]], names=["Dept", "Workflow"]),
                  columns=["Comment 1", "Comment 2"],
                  data=[["Green", "Red"], ["Yellow", "Yellow"], ["Green", "Red"], ["Yellow", "Yellow"]])
styler = df.style
styler

enter image description here

您可以对数据单元格和索引单元格进行一些基本样式设置,如下所示:

styler.set_table_styles([{'selector': 'td', 'props': 'text-align: left;'},
                         {'selector': 'th.level1', 'props': 'text-align: left;'}])\
      .applymap(lambda x: f"color: {x.lower()}")

enter image description here

相关问题 更多 >