किसी सूत्र फ़ाइल में स्ट्रिंग मानों की डेटाफ़्रेम कैसे लिखें रूपांकित संख्यात्मक मान?

Jan 05 2021

मूल रूप से मेरे पास स्ट्रिंग मानों की एक सूची है जो कि संख्यात्मक में परिवर्तित होने और एक्सेल शीट पर मुद्रित करने के लिए होती है। Im पहले से ही ऐसा करने में सक्षम है, लेकिन मैं चाहता हूं कि उन मूल्यों को "एक्सेल नंबर मान" के रूप में मुद्रित किया जाए । यह है जो मुझे मिला:

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

मेरा परिणाम है:

परिणामी एक्सेल

लेकिन मैं चाहता हूं कि इसे अंकों के रूप में मुद्रित किया जाए क्योंकि डॉट्स द्वारा अलग किए गए संख्यात्मक मान इसे तैयार करने में आसान बनाते हैं, जैसे:

मैं परिणाम के रूप में क्या करना चाहता हूँ

(मैं चाहता हूं कि समाधान परिणामी एक्सेल में तार के रूप में मुद्रित नहीं किया जा सकता है, इसे संख्यात्मक मानों की आवश्यकता है, जैसे कि हम libreoffice calc में "Format as Number (Shift + ctrl + 1)" विकल्प का उपयोग कर रहे थे।

(परीक्षण के लिए पायथन 3.8.5 और लिब्रेऑफिस कैल्क का उपयोग कर रहा हूं, लेकिन परिणाम एक्सेल 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'})