मेरे पास एक शब्दकोश के रूप में इनपुट डेटा है जिसमें संख्याओं के 3 डेटाफ़्रेम शामिल हैं। मैं कुछ ऑपरेशन के साथ प्रत्येक डेटाफ्रेम के माध्यम से पुनरावृति करना चाहता हूं और फिर अंत में प्रत्येक डेटाफ्रेम को एक्सेल करने के लिए परिणाम लिखता हूं।
निम्न कोड ठीक काम करता है सिवाय इसके कि यह केवल शब्दकोश में अंतिम कुंजी के लिए परिणामी डेटाफ़्रेम लिखता है।
मैं अलग-अलग शीट पर लिखे गए सभी 3 डेटाफ्रेम के परिणाम कैसे प्राप्त करूं?
Input_Data={'k1':test1,'k2':test24,'k3':test3}
for v in Input_Data.values():
df1 = v[126:236]
df=df1.sort_index(ascending=False)
Indexer=df.columns.tolist()
df = [(pd.concat([df[Indexer[0]],df[Indexer[num]]],axis=1)) for num in [1,2,3,4,5,6]]
df = [(df[num].astype(str).agg(','.join, axis=1)) for num in [0,1,2,3,4,5]]
df=pd.DataFrame(df)
dff=df.loc[0].append(df.loc[1].append(df.loc[2].append(df.loc[3].append(df.loc[4].append(df.loc[5])))))
dff.to_excel('test.xlsx',index=False, header=False)
3 जवाब
आपका पहला मुद्दा यह है कि लूप के प्रत्येक पुनरावृत्ति के साथ आप एक नई फाइल खोल रहे हैं।
पांडा के अनुसार दस्तावेज़ीकरण:
"अद्वितीय पत्रक_नाम निर्दिष्ट करके कई पत्रक लिखे जा सकते हैं। फ़ाइल में लिखे गए सभी डेटा के साथ परिवर्तनों को सहेजना आवश्यक है। ध्यान दें कि पहले से मौजूद फ़ाइल नाम के साथ ExcelWriter ऑब्जेक्ट बनाने से मौजूदा फ़ाइल की सामग्री होगी मिटा दिया।"
दूसरा, आप एक वेरिएबल शीट नाम प्रदान नहीं कर रहे हैं, इसलिए हर बार डेटा को उसी शीट के रूप में फिर से लिखा जा रहा है।
एक उदाहरण समाधान, ExcelWriter के साथ
#df1, df2, df3 - dataframes
input_data={
'sheet_name1' : df1,
'sheet_name2' : df2,
'sheet_name3' : df3
}
# Initiate ExcelWriter - use xlsx engine
writer = pd.ExcelWriter('multiple_sheets.xlsx', engine='xlsxwriter')
# Iterate over input_data dictionary
for sheet_name, df in input_data.items():
"""
Perform operations here
"""
# Write each dataframe to a different worksheet.
df.to_excel(writer, sheet_name=sheet_name)
# Finally, save ExcelWriter to file
writer.save()
नोट 1. आप केवल एक बार ExcelWriter ऑब्जेक्ट को आरंभ और सहेजते हैं, पुनरावृत्तियों केवल उस ऑब्जेक्ट में शीट जोड़ते हैं
नोट 2. आपके कोड की तुलना में, "to_excel ()" फ़ंक्शन को चर "शीट_नाम" प्रदान किया जाता है
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
# Write each dataframe to a different worksheet.
for sheet_name, df in zip(sheet_names, dfs):
df.to_excel(writer, sheet_name=sheet_name)
# Close the Pandas Excel writer and output the Excel file.
writer.save()
प्रत्येक पुनरावृत्ति पर फ़ाइल का नाम बदलने का प्रयास करें:
Input_Data={'k1':test1,'k2':test24,'k3':test3}
file_number = 1
for v in Input_Data.values():
df1 = v[126:236]
df=df1.sort_index(ascending=False)
Indexer=df.columns.tolist()
df = [(pd.concat([df[Indexer[0]],df[Indexer[num]]],axis=1)) for num in [1,2,3,4,5,6]]
df = [(df[num].astype(str).agg(','.join, axis=1)) for num in [0,1,2,3,4,5]]
df=pd.DataFrame(df)
dff=df.loc[0].append(df.loc[1].append(df.loc[2].append(df.loc[3].append(df.loc[4].append(df.loc[5])))))
file_name='test'
file_number=str(file_number)
dff.to_excel( str(file_name+file_number)+".xlsx",index=False, header=False)
file_number=int(file_number)
file_number = file_number+1
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।