文字列値のデータフレームをフォーマットされた数値としてExcelファイルに書き込む方法は?

Jan 05 2021

基本的に、数値に変換してExcelシートに出力することを目的とした文字列値のリストがあります。すでに それを行うことはできますが、それらの値を「Excelの数値」として出力したいと思います。これが私が得たものです:

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()

私の結果は次のとおりです。

結果のExcel

しかし、次のように、準備を簡単にするために、ドットで区切られた数値として印刷する必要があります。

結果として欲しいもの

(私が望むソリューションは、結果のExcelで文字列として印刷することはできません。libreofficecalcで[数値としてフォーマット(Shift + ctrl + 1)]オプションを使用しているかのように、数値である必要があります)。

(テストにはPython3.8.5とLibreOfficeCalcを使用していますが、結果はExcel 2016で機能することを目的としています)。

それは可能ですか?あなたの助けに感謝し、私の英語について申し訳ありません!

回答

DonLarry Jan 06 2021 at 07:11

私はこの別の質問を見つけました、それは異なります、しかし答えは私が思うのと同じです。

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()

その形式では機能しますが、その形式では機能しないよう'#.##0,00'です

DonLarry Jan 05 2021 at 21:55

これをチェックして https://xlsxwriter.readthedocs.io/working_with_pandas.html

set_column()を使用して、他の日付/日時以外の列データをフォーマットすることができます。

書式設定のサンプルコードを次のように変更してみてください。

format1 = workbook.add_format({'num_format': '#,##0.00'})

これに:

format1 = workbook.add_format({'num_format': '#.##0,00'})