Come scrivere un dataframe di valori stringa in un file Excel come valori numerici formattati?
Fondamentalmente ho un elenco di valori di stringa che devono essere convertiti in numerici e stampati in un foglio Excel. Sono in grado di farlo già, ma voglio che quei valori vengano stampati come "valori numerici Excel" . Ecco cosa ho ottenuto:
writer = pd.ExcelWriter('test.xlsx', engine='openpyxl')
listOfValues = ['3913375,45','126179,15','22324,72','26335,28','3699901,34']
df_values = pd.DataFrame({'TOTAL': listOfValues}).apply(pd.to_numeric)
df_values.to_excel(writer, sheet_name='test')
writer.save()
Il mio risultato è:
Excel risultante
Ma voglio che venga stampato come valori numerici separati da punti per renderlo più facile da preparare, in questo modo:
Quello che voglio avere come risultato
(La soluzione che desidero non può essere stampata come stringhe nell'excel risultante, deve essere valori numerici, come se stessimo usando l'opzione "Formato come numero (Shift + ctrl + 1)" in libreoffice calc).
(Sto usando Python 3.8.5 e LibreOffice Calc per i test, ma il risultato dovrebbe funzionare in Excel 2016).
È possibile? Grazie per il tuo aiuto e scusa per il mio inglese!
Risposte
Ho trovato quest'altra domanda , è diversa, ma la risposta è la stessa credo.
from openpyxl import load_workbook
wb = load_workbook('a.xlsx')
ws = wb[wb.sheetnames[0]]
cell11 = ws.cell(1, 1)
cell11.number_format = '#,##0.00'
wb.save('b.xlsx')
wb.close()
Funziona con quel formato, ma sembra che non funzioni con il '#.##0,00'
formato
Verificare questo https://xlsxwriter.readthedocs.io/working_with_pandas.html
È possibile formattare qualsiasi altro dato di colonna non data / data / ora utilizzando set_column ()
Prova a modificare il codice di esempio di formattazione da questo:
format1 = workbook.add_format({'num_format': '#,##0.00'})
a questo:
format1 = workbook.add_format({'num_format': '#.##0,00'})