मैं अजगर के साथ विस्तृत डेटा संग्रहीत करने के लिए एक्सेल फ़ाइलों का उपयोग करना चाहता हूं। मेरी समस्या यह है कि मैं मौजूदा एक्सेल फाइल में शीट नहीं जोड़ सकता। यहाँ मैं इस मुद्दे तक पहुँचने के लिए काम करने के लिए एक नमूना कोड सुझाता हूँ
import pandas as pd
import numpy as np
path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"
x1 = np.random.randn(100, 2)
df1 = pd.DataFrame(x1)
x2 = np.random.randn(100, 2)
df2 = pd.DataFrame(x2)
writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df1.to_excel(writer, sheet_name = 'x1')
df2.to_excel(writer, sheet_name = 'x2')
writer.save()
writer.close()
यह कोड दो डेटाफ़्रेम को दो शीट में क्रमशः "X1" और "x2" नाम से सहेजता है। यदि मैं दो नए डेटाफ़्रेम बनाता हूं और दो नई शीट, 'x3' और 'x4' को जोड़ने के लिए समान कोड का उपयोग करने का प्रयास करता हूं, तो मूल डेटा खो जाता है।
import pandas as pd
import numpy as np
path = r"C:\Users\fedel\Desktop\excelData\PhD_data.xlsx"
x3 = np.random.randn(100, 2)
df3 = pd.DataFrame(x3)
x4 = np.random.randn(100, 2)
df4 = pd.DataFrame(x4)
writer = pd.ExcelWriter(path, engine = 'xlsxwriter')
df3.to_excel(writer, sheet_name = 'x3')
df4.to_excel(writer, sheet_name = 'x4')
writer.save()
writer.close()
मुझे चार शीट वाली एक्सेल फाइल चाहिए: 'X1', 'x2', 'x3', 'x4'। मुझे पता है कि 'xlsxwriter' केवल "इंजन" नहीं है, 'Openpyxl' है। मैंने यह भी देखा कि पहले से ही अन्य लोग हैं जिन्होंने इस मुद्दे के बारे में लिखा है, लेकिन फिर भी मैं यह नहीं समझ सकता कि ऐसा कैसे करें।
यहाँ इस लिंक से एक कोड लिया गया है
import pandas
from openpyxl import load_workbook
book = load_workbook('Masterfile.xlsx')
writer = pandas.ExcelWriter('Masterfile.xlsx', engine='openpyxl')
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)
data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])
writer.save()
वे कहते हैं कि यह काम करता है, लेकिन यह पता लगाना मुश्किल है कि कैसे। मुझे समझ नहीं आ रहा है कि इस संदर्भ में "ws.title", "ws" और "तानाशाह" क्या हैं।
"एक्स 1" और "एक्स 2" को बचाने का सबसे अच्छा तरीका क्या है, फिर फ़ाइल को बंद करें, इसे फिर से खोलें और "x3" और "x4" जोड़ें?