为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

繁星coding 2023-02-22 15:29:46
我应该如何使用 Pandas 在 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'] = worksheetformat = 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)writer.save()上面的代码可以改变第一行的颜色。但是,数据帧标题的背景颜色没有改变。
查看完整描述

1 回答

?
www说

TA贡献1775条经验 获得超8个赞

根据文档,“Pandas 使用默认单元格格式编写数据帧标题。由于它是一种单元格格式,因此无法使用 set_row() 覆盖它。如果您希望使用自己的标题格式,那么最好的方法是转关闭 Pandas 的自动标头并编写您自己的标头。”。解决方案是在调用中包含header=False并避免复制标题并将第一行留空,然后遍历标题以粘贴列值和您喜欢的格式。startrow=1to_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, 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()


查看完整回答
反对 回复 2023-02-22
  • 1 回答
  • 0 关注
  • 1378 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信