Come scrivere un dataframe di valori stringa in un file Excel come valori numerici formattati?

Jan 05 2021

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

DonLarry Jan 06 2021 at 07:11

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

DonLarry Jan 05 2021 at 21:55

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'})