首页 > 解决方案 > 如何将 Format 对象应用于 pandas 中的索引值

问题描述

问题:我有一个数据框,其列名具有各自的值。但是当我将格式对象应用于列标题时,它们没有响应。

代码:

import pandas as pd

root = "C:\Users\543904\Desktop\New folder\"

dict = {'name':["aparna", "pankaj"],
        'degree': ["MBA", "BCA"],
        'score':[90, 40]}

df = pd.DataFrame(dict)

writer = pd.ExcelWriter(root + 'output', engine = "xlsxwriter")
df.to_excel(writer, sheet_name='df', index = False)

workbook = writer.book
worksheet = writer.sheets['df']

Format_Object = workbook.add_format({'text_wrap': True})
Format_Object.set_bold()
Format_Object.set_align('center')
Format_Object.set_align('top')
Format_Object.set_border(1)
Format_Object.set_bg_color('#0ef0ce')

worksheet.set_row(0, 20, Format_Object)

writer.save()

预期的:

预期的

实际的:

实际的

标签: pythonpandas

解决方案


这在有关使用 Python Pandas 和 XlsxWriter的 XlsxWriter 文档中进行了解释:

Pandas 使用默认单元格格式写入数据帧标头。由于它是一种单元格格式,因此不能使用set_row(). 如果您希望使用自己的标题格式,那么最好的方法是关闭 Pandas 的自动标题并编写自己的标题。例如:

# Turn off the default header and skip one row to allow us to insert a
# user defined header.
df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False)

# Get the xlsxwriter workbook and worksheet objects.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

# Add a header format.
header_format = workbook.add_format({
    'bold': True,
    'text_wrap': True,
    'valign': 'top',
    'fg_color': '#D7E4BC',
    '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)

在此处输入图像描述


推荐阅读