pandas xlsxwriter, заголовок форматирования

Я сохраняю pandas DataFrame to_excel с помощью xlsxwriter. Мне удалось отформатировать все мои данные (установить ширину столбца, размер шрифта и т. Д.), За исключением изменения шрифта заголовка, и я не могу найти способ сделать это. Вот мой пример:

import pandas as pd data = pd.DataFrame({'test_data': [1,2,3,4,5]}) writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter') data.to_excel(writer, sheet_name='test', index=False) workbook = writer.book worksheet = writer.sheets['test'] font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10}) header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True}) worksheet.set_column('A:A', None, font_fmt) worksheet.set_row(0, None, header_fmt) writer.save() 

Предпоследняя строка, которая пытается установить формат для заголовка, ничего не делает.

3 Solutions collect form web for “pandas xlsxwriter, заголовок форматирования”

Я думаю, вам нужно сначала сбросить стиль заголовка по умолчанию, а затем вы можете его изменить:

 pd.core.format.header_style = None 

Все вместе:

 import pandas as pd data = pd.DataFrame({'test_data': [1,2,3,4,5]}) writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter') pd.core.format.header_style = None data.to_excel(writer, sheet_name='test', index=False) workbook = writer.book worksheet = writer.sheets['test'] font_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10}) header_fmt = workbook.add_format({'font_name': 'Arial', 'font_size': 10, 'bold': True}) worksheet.set_column('A:A', None, font_fmt) worksheet.set_row(0, None, header_fmt) writer.save() 

Объясняя jmcnamara , спасибо:

В Excel формат ячейки переопределяет формат строки, переопределяет формат столбца. pd.core.format.header_style преобразуется в формат и применяется к каждой ячейке в заголовке. Таким образом, значение по умолчанию не может быть отменено set_row() . Установка pd.core.format.header_style в None означает, что ячейки заголовка не имеют пользовательского формата и, следовательно, могут быть переопределены set_row() .

EDIT: в версии 0.18.1 вы должны изменить

 pd.core.format.header_style = None 

чтобы:

 pd.formats.format.header_style = None 

спасибо krvkir .

Обновление для всех, кто сталкивается с этим сообщением и использует Pandas 0.20.1.

Кажется, что требуемый код сейчас

 import pandas.io.formats.excel pandas.io.formats.excel.header_style = None 

По-видимому, подмодуль excel не импортируется автоматически, поэтому просто попытка pandas.io.formats.excel.header_style = None сама по себе повысит AttributeError .

В pandas 0.20 решение принятого ответа снова изменилось.

Формат, который должен быть установлен на None, можно найти по адресу:

 pandas.io.formats.excel.header_style 
Python - лучший язык программирования в мире.