Python/Pandas 样式的列标题

Doc*_*1FT 3 python pandas

在将数据框导出到 excel 之前,我想突出显示特定的列标题。

我曾尝试使用 Pandas Styler 来突出显示指定的列。

cm = sns.light_palette("green", as_cmap = True)

etc = etc.style.background_gradient(cmap=cm)
Run Code Online (Sandbox Code Playgroud)

我从这个基本代码开始,以突出显示我的整个数据框,希望能调整和完善我的选择。然而,即使使用这种广泛的方法,也不是所有的价值都被突出显示。所需的结果是仅突出显示列标题,如果不可能,则仅突出显示与特定标题关联的数据。

ASG*_*SGM 6

这是基于以下文档的答案xlsxwriter

首先创建一个xlsxwriter对象并将数据帧写入其中。 header=False意味着我们不写列名并startrow=1在顶部留下一个空白行(我们可以在下面放置自定义列)。然后我们得到workbookand的相关对象worksheet

writer = pd.ExcelWriter("output.xlsx", engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False)
workbook  = writer.book
worksheet = writer.sheets['Sheet1']
Run Code Online (Sandbox Code Playgroud)

我们创建一个标题格式:

header_format = workbook.add_format({
    'bold': True,
    'text_wrap': True,
    'valign': 'top',
    'fg_color': '#D7E4BC',
    'border': 1})
Run Code Online (Sandbox Code Playgroud)

比方说,你有三列,AB,和C,但只希望突出AC。我们列出要突出显示的列名称,并有选择地对其应用格式:

columns_to_highlight = ['A', 'C']
for col_num, col_name in enumerate(df.columns.values):
    if col_name in columns_to_highlight:
        worksheet.write(0, col_num + 1, col_name, header_format)
    else:
        worksheet.write(0, col_num + 1, col_name)
writer.save()
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这很完美。我真的很感谢您的时间和精力,特别是有据可查的回复!作为仍在学习的人,我们非常感激! (2认同)