python - कई अजगर पांडा डेटाफ्रेम को एक एक्सेल वर्कशीट में डालना




excel pandas (2)

कई पंडस डेटाफ्रेम को एक्सेल वर्क बुक में जोड़ना काफी आसान है, क्योंकि यह अलग कार्यपत्रक है। लेकिन, कई डेटाफ्रेम को एक वर्कशीट में प्राप्त करने के लिए यह कुछ मुश्किल है यदि आप पांडा का उपयोग करना चाहते हैं df.to_excel कार्यक्षमता में अंतर्निहित

# Creating Excel Writer Object from Pandas  
writer = pd.ExcelWriter('test.xlsx',engine='xlsxwriter')   
workbook=writer.book
worksheet=workbook.add_worksheet('Validation') 
df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)   
another_df.to_excel(writer,sheet_name='Validation',startrow=20, startcol=0) 

उपरोक्त कोड काम नहीं करेगा आप की त्रुटि मिल जाएगी

 Sheetname 'Validation', with case ignored, is already in use.

अब, मैंने पर्याप्त प्रयोग किया है कि मुझे यह काम करने का एक तरीका मिला।

writer = pd.ExcelWriter('test.xlsx',engine='xlsxwriter')   # Creating Excel Writer Object from Pandas  
workbook=writer.book
df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)   
another_df.to_excel(writer,sheet_name='Validation',startrow=20, startcol=0) 

यह काम करेगा इसलिए, स्टैक ओवरफ्लो पर इस प्रश्न को पोस्ट करने का मेरा उद्देश्य दो गुना है। सबसे पहले, मुझे आशा है कि यह किसी को मदद करेगा, अगर वह एक्सेल में कई डाटाफ्रेम को एक काम शीट में रखने की कोशिश कर रहा है।

दूसरे, क्या कोई मुझे कोड के उन दो ब्लॉकों के बीच के अंतर को समझ सकता है? ऐसा प्रतीत होता है कि वे पहले कोड के पहले ब्लॉक को छोड़कर बहुत ही समान हैं, जो कि "मान्यकरण" नामक वर्कशीट पहले से बना है, जबकि दूसरा नहीं है। मुझे वह हिस्सा मिलता है

मुझे जो समझ में नहीं आता है वह किसी भी अलग क्यों होना चाहिए? यहां तक ​​कि अगर मैं कार्यपत्रक पहले से नहीं बनाऊं, तो यह पंक्ति, पिछले एक से पहले पंक्ति ठीक है,

 df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)  

वैसे भी एक वर्कशीट पैदा करेगा नतीजतन, जब तक हम कोड की अंतिम पंक्ति तक पहुंचे, कार्यपत्रक "मान्यकरण" पहले से ही कोड के दूसरे ब्लॉक में भी बना है। तो, मेरा प्रश्न मूल रूप से, कोड के दूसरे ब्लॉक को क्यों काम करना चाहिए, जबकि पहले नहीं?

कृपया भी साझा करें अगर अंतर्निहित df.to_excel कार्यक्षमता का उपयोग करके कई डेटाफ्रेम को एक्सेल में डालने का एक और तरीका है !!


मैं पहली बार डेटाफ्रेम को जोड़ने और फिर उस डेटाफ़्रेम को एक एक्सेल प्रारूप में बदलना चाहता हूं। दो डेटाफ्रेम को साथ-साथ एक तरफ रखकर (दूसरे के ऊपर एक के विपरीत) ऐसा करें:

writer = pd.ExcelWriter('test.xlsx',engine='xlsxwriter')   # Creating Excel Writer Object from Pandas  
workbook=writer.book
df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)   
new_df = pd.concat([df, another_df], axis=1)
new_df.to_excel(writer,sheet_name='Validation',startrow=0 , startcol=0)   

user3817518: "बहुत सारे डेटाफ्रेम को एक्सेल में अंतर्निहित df.to_excel कार्यक्षमता का उपयोग करने का एक और तरीका है, कृपया भी साझा करें!"

यहां मेरा प्रयास है:

सिर्फ एक शीट पर या कई टैब पर बहुत सारे डेटाफ्रेम को एकजुट करने का आसान तरीका। अगर यह कार्यशील है, तो मुझे बताएं!

- परीक्षण करने के लिए, बस नमूना डेटाफ्रेम और कोड का दूसरा और तीसरा भाग चलाएं।

नमूना डेटाफ्रेम

import pandas as pd
import numpy as np

# Sample dataframes    
randn = np.random.randn
df = pd.DataFrame(randn(15, 20))
df1 = pd.DataFrame(randn(10, 5))
df2 = pd.DataFrame(randn(5, 10))

एक एक्सएलएसएक्स शीट में एक से अधिक डेटाफ्रेम रखें

# funtion
def multiple_dfs(df_list, sheets, file_name, spaces):
    writer = pd.ExcelWriter(file_name,engine='xlsxwriter')   
    row = 0
    for dataframe in df_list:
        dataframe.to_excel(writer,sheet_name=sheets,startrow=row , startcol=0)   
        row = row + len(dataframe.index) + spaces + 1
    writer.save()

# list of dataframes
dfs = [df,df1,df2]

# run function
multiple_dfs(dfs, 'Validation', 'test1.xlsx', 1)

अलग-अलग टैब / शीट में कई डाटाफ्रेम रखें

# function
def dfs_tabs(df_list, sheet_list, file_name):
    writer = pd.ExcelWriter(file_name,engine='xlsxwriter')   
    for dataframe, sheet in zip(df_list, sheet_list):
        dataframe.to_excel(writer, sheet_name=sheet, startrow=0 , startcol=0)   
    writer.save()

# list of dataframes and sheet names
dfs = [df, df1, df2]
sheets = ['df','df1','df2']    

# run function
dfs_tabs(dfs, sheets, 'multi-test.xlsx')




xlsxwriter