Удалите форматирование по умолчанию в заголовке при преобразовании панд DataFrame в лист Excel - PullRequest
4 голосов
/ 19 марта 2019

Это то, на что мы отвечали и отвечали снова и снова, потому что ответ постоянно меняется с обновлениями для панд. Я попробовал некоторые из решений, которые я нашел здесь и в другом месте онлайн, и ни одно из них не помогло мне в текущей версии панд. Кто-нибудь знает текущее исправление pandas 0.24.2, март 2019 г., для удаления стиля по умолчанию, который DataFrame присваивает заголовку при преобразовании в лист Excel? Простое использование xlsxwriter для перезаписи стиля не работает из-за проблемы с приоритетом.

Ответы [ 2 ]

2 голосов
/ 19 марта 2019

Основанный в основном на примере, представленном в Документах Xlsxwriter ( ссылка здесь ), приведенный ниже полностью воспроизводимый пример удаляет формат заголовка панд по умолчанию в pandas 0.24.2. Следует отметить, что в df.to_excel() я меняю параметры header и startrow.

import xlsxwriter
import pandas as pd
import numpy as np

# Creating a dataframe 
df = pd.DataFrame(np.random.randn(100, 3), columns=list('ABC'))
column_list = df.columns
# Create a Pandas Excel writer using XlsxWriter engine.
writer = pd.ExcelWriter("test.xlsx", engine='xlsxwriter')

df.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False, index=False)

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


for idx, val in enumerate(column_list):
    worksheet.write(0, idx, val)

writer.save()

print(pd.__version__)

Ожидаемый результат:

0.24.2

Expected Output

1 голос
/ 13 апреля 2019

Ключевое объяснение таково: pandas записывает заголовок df с set_cell(). Формат ячейки (на языке xlsxwriter, «формат» - это объект FormatObject, который необходимо добавить к объекту worksheetObject) NOT можно переопределить с помощью set_row(). Если вы используете set_row() в строке заголовка, она не будет работать, вы должны использовать set_cell().

...