Sto salvando pandas DataFrame su_excel utilizzando xlsxwriter. Sono riuscito a formattare tutti i miei dati (impostare la larghezza della colonna, la dimensione del carattere ecc.) Tranne per il cambio del carattere dell'intestazione e non riesco a trovare il modo di farlo. Ecco il mio esempio:panda xlsxwriter, intestazione formato
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()
penultima riga che cerca di impostare il formato per l'intestazione non fa nulla.
Soluzione buona. Solo qualche background per spiegare perché funziona. In Excel, un formato di cella ha la precedenza su un formato di riga che sostituisce un formato di colonna. Il 'pd.core.format.header_style' viene convertito in un formato e viene applicato a ogni cella nell'intestazione. Pertanto, il valore predefinito non può essere sovrascritto da 'set_row()'. Impostare 'pd.core.format.header_style' su' None' significa che le celle dell'intestazione non hanno un formato definito dall'utente e quindi il formato può essere ignorato. – jmcnamara
Sembra che in panda 0.18.1 si spostino 'pd. core.format' al modulo 'pd.formats', quindi ora si dovrebbe scrivere' pd.formats.format.header_style = None'. – krvkir
@krvkir - Grazie, aggiungo il tuo commento per rispondere. – jezrael