2013-01-08 11 views
49

Come esportare un elenco di DataFrames in un foglio di calcolo di Excel?
I documenti per to_excel stato:Salvare l'elenco di DataFrames su un foglio di calcolo multisheet di Excel

Note
Se passaggio di un oggetto ExcelWriter esistente, quindi viene aggiunto il foglio alla cartella di lavoro esistente. Questo può essere usato per salvare diversi DataFrames a una cartella di lavoro

writer = ExcelWriter('output.xlsx')
df1.to_excel(writer, 'sheet1')
df2.to_excel(writer, 'sheet2')
writer.save()

A seguito di questo, ho pensato che avrei potuto scrivere una funzione che consente di risparmiare un elenco di DataFrames a uno foglio di calcolo come segue:

from openpyxl.writer.excel import ExcelWriter 
def save_xls(list_dfs, xls_path): 
    writer = ExcelWriter(xls_path) 
    for n, df in enumerate(list_dfs): 
     df.to_excel(writer,'sheet%s' % n) 
    writer.save() 

Tuttavia (con una lista di due piccoli DataFrames, ognuno dei quali può salvare to_excel singolarmente), viene sollevata un'eccezione (Edit: traceback rimosso):

AttributeError: 'str' object has no attribute 'worksheets' 

Presumibilmente Non chiedo ExcelWriter correttamente, come dovrebbe Sono per fare questo?

risposta

74

si dovrebbe usare i panda possiedono ExcelWriter classe:

from pandas import ExcelWriter 
# from pandas.io.parsers import ExcelWriter 

Poi la funzione save_xls funziona come previsto:

def save_xls(list_dfs, xls_path): 
    writer = ExcelWriter(xls_path) 
    for n, df in enumerate(list_dfs): 
     df.to_excel(writer,'sheet%s' % n) 
    writer.save() 
+1

... quello che uno strumento! –

+0

perché non solo 'df.to_excel ('file_path')'? – root

+0

@root Non penso che funzioni per un elenco di dataframes? –

Problemi correlati