如何使用 Pandas 更改 Excel 单元格/行的背景颜色?

我应该如何使用 Pandas 在 Excel 中设置一组单元格的颜色?


import pandas as pd

import numpy as np


np.random.seed(24)

df = pd.DataFrame({'A': np.linspace(1, 10, 10)})

df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],

               axis=1)


writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')

workbook = writer.book

worksheet = workbook.add_worksheet('Summary')

writer.sheets['Summary'] = worksheet


format = workbook.add_format({'bg_color': '#21AD25'})

worksheet.set_row(0, cell_format= format)  # set the color of the first row to green


df.to_excel(writer, sheet_name='Summary', index=False)

writer.save()

上面的代码可以改变第一行的颜色。但是,数据帧标题的背景颜色没有改变。


繁星coding
浏览 1382回答 1
1回答

www说

根据文档,“Pandas 使用默认单元格格式编写数据帧标题。由于它是一种单元格格式,因此无法使用 set_row() 覆盖它。如果您希望使用自己的标题格式,那么最好的方法是转关闭 Pandas 的自动标头并编写您自己的标头。”。解决方案是在调用中包含header=False并避免复制标题并将第一行留空,然后遍历标题以粘贴列值和您喜欢的格式。startrow=1to_excel使用您的代码的完整示例:import pandas as pdimport numpy as npnp.random.seed(24)df = pd.DataFrame({'A': np.linspace(1, 10, 10)})df = pd.concat([df, pd.DataFrame(np.random.randn(10, 4), columns=list('BCDE'))],               axis=1)writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')workbook = writer.bookworksheet = workbook.add_worksheet('Summary')writer.sheets['Summary'] = worksheet# format = workbook.add_format({'bg_color': '#21AD25'})# worksheet.set_row(0, cell_format= format)  # set the color of the first row to greendf.to_excel(writer, sheet_name='Summary', index=False, startrow=1, header=False)# Add a header format.header_format = workbook.add_format({    'bg_color': '#21AD25',  # your setting    'bold': True,           # additional stuff...    'text_wrap': True,    'valign': 'top',    'align': 'center',    'border': 1})# Write the column headers with the defined format.for col_num, value in enumerate(df.columns.values):    worksheet.write(0, col_num + 1, value, header_format)writer.save()
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python