Sto provando a scrivere un panda DataFrame
in un file .xlsx
in cui diverse colonne numeriche avrebbero formati diversi. Ad esempio, alcuni mostrerebbero solo due cifre decimali, alcuni non mostrerebbero nessuno, alcuni sarebbero formattati come percentuali con un simbolo "%", ecc.Scrittura di pandi DataFrame in Excel con diversi formati per diverse colonne
Ho notato che DataFrame.to_html()
ha un parametro formatters
che consente di fare proprio questo , mappando diversi formati a diverse colonne. Tuttavia, non esiste un parametro simile nel metodo DataFrame.to_excel()
. Il massimo che abbiamo è un float_format
globale per tutti i numeri.
Ho letto molti SO messaggi che sono almeno in parte legati alla mia domanda, per esempio:
- Use the older
openpyxl
engine to apply formats one cell at a time. Questo è l'approccio con il quale ho avuto il maggior successo. Ma significa scrivere loop per applicare formati cella per cella, ricordare offset, ecc. - Render percentages by changing the table data itself into strings. Il percorso di modifica dei dati effettivi mi ha spinto a provare a gestire la formattazione delle cifre decimali chiamando
round()
in ogni colonna prima di scrivere in Excel, anche se questo funziona, ma vorrei evitare di alterare i dati. - altri assortiti, per lo più su formati di data
Ci sono altri più conveniente funzioni di Excel correlate/proprietà nella API di panda che possono aiutare qui, o qualcosa di simile su openpyxl
, o forse qualche modo per specificare il formato di output metadati direttamente su ogni colonna nello DataFrame
che sarebbero poi interpretati a valle da diversi outputter?
E la rimozione di TUTTI i formati? Qualcuno sa se c'è un modo rapido per farlo? – Lisle