使用多索引设计数据框并导出到Excel

问题描述 投票:0回答:1

我有一个像这样的数据框:

df = pd.DataFrame({
        'Counterparty': ['foo', 'fizz', 'fizz', 'fizz','fizz'],
        'Commodity': ['bar', 'bar', 'bar', 'bar','bar'],
        'DealType': ['Buy', 'Buy', 'Buy', 'Buy', 'Buy'],
        'StartDate': ['07/01/2024', '09/01/2024', '10/01/2024', '11/01/2024', '12/01/2024'],
        'FloatPrice': [18.73, 17.12, 17.76, 18.72, 19.47],
        'MTMValue':[10, 10, 10, 10, 10]
        })


df = df.set_index(['Counterparty', 'Commodity', 'DealType','StartDate']).sort_index()[['FloatPrice', 'MTMValue']]

print(df)

我正在尝试将样式应用于数据框,然后再将其导出到 Excel。这就是我到目前为止所做的:

def style_index(s):
    return "background-color: lightblue; text-align: center; border: 1px solid black; vertical-align: middle;"

def style_header(s):
    return "background-color: lightgrey; text-align: center;"

styled_df = df.style.set_properties(**{
                            'background-color': 'darkblue',
                            'color': 'white',
                            'text-align': 'center'}).map_index(style_index).map_index(style_header, axis="columns")

产生这个:

enter image description here

但是我需要数据框看起来像这样:

enter image description here

  • 索引列标题未突出显示
  • 索引中的项目未居中对齐

此外,我觉得有一种更有效的方法来完成我已经在做的事情,所以任何建议都会受到赞赏。

编辑:设法使文本在中心垂直对齐,但仍然没有突出显示索引列标题

python pandas dataframe
1个回答
0
投票

我不确定如何使用map_index获取索引名称,但是,您可以使用set_table_style设置它:

styled_df.set_table_styles([dict(selector='.index_name', props=[('text-align', 'center'), ('background-color', 'lightgray')])])
© www.soinside.com 2019 - 2024. All rights reserved.