पुराना सवाल है, लेकिन मुझे लगता है कि कुछ लोग अभी भी इसके लिए खोज कर रहे हैं - इसलिए ...
मुझे यह तरीका अच्छा लग रहा है क्योंकि सभी वर्कशीट को शीट नाम और डेटाफ्रेम जोड़े के शब्दकोश में लोड किया गया है, जिसे शीट नाम के साथ पांडा द्वारा बनाया गया है = कोई भी विकल्प नहीं। स्प्रेडशीट को तानाशाही प्रारूप में पढ़ने और उसे वापस से लिखने के बीच वर्कशीट को जोड़ना, हटाना या संशोधित करना सरल है। मेरे लिए xlsxwriter गति और प्रारूप के संदर्भ में इस विशेष कार्य के लिए Openpyxl से बेहतर काम करता है।
नोट: पांडा के भावी संस्करण (0.21.0+) "शीटनाम" पैरामीटर को "शीट_नाम" में बदल देगा।
# read a single or multi-sheet excel file
# (returns dict of sheetname(s), dataframe(s))
ws_dict = pd.read_excel(excel_file_path,
sheetname=None)
# all worksheets are accessible as dataframes.
# easy to change a worksheet as a dataframe:
mod_df = ws_dict['existing_worksheet']
# do work on mod_df...then reassign
ws_dict['existing_worksheet'] = mod_df
# add a dataframe to the workbook as a new worksheet with
# ws name, df as dict key, value:
ws_dict['new_worksheet'] = some_other_dataframe
# when done, write dictionary back to excel...
# xlsxwriter honors datetime and date formats
# (only included as example)...
with pd.ExcelWriter(excel_file_path,
engine='xlsxwriter',
datetime_format='yyyy-mm-dd',
date_format='yyyy-mm-dd') as writer:
for ws_name, df_sheet in ws_dict.items():
df_sheet.to_excel(writer, sheet_name=ws_name)
2013 के प्रश्न में उदाहरण के लिए:
ws_dict = pd.read_excel('Masterfile.xlsx',
sheetname=None)
ws_dict['Main'] = data_filtered[['Diff1', 'Diff2']]
with pd.ExcelWriter('Masterfile.xlsx',
engine='xlsxwriter') as writer:
for ws_name, df_sheet in ws_dict.items():
df_sheet.to_excel(writer, sheet_name=ws_name)