2013-01-08 11 views
49

Jak wyeksportować listę elementów DataFrames do jednego arkusza kalkulacyjnego programu Excel?
Docs do to_excel stanowią:Zapisywanie listy elementów DataFrames w arkuszu kalkulacyjnym programu Excel w wersji wielowarstwowej

Uwagi
przypadku przechodzenia istniejącego obiektu ExcelWriter, a następnie arkusz zostanie dodany istniejącego skoroszytu. Może być używany do zapisywania różnych DataFrames do jednego skoroszytu

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

Po tym, myślałem, mógłbym napisać funkcję, która zapisuje listę DataFrames do jednego arkusz kalkulacyjny w następujący sposób:

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() 

Jednak (z listą dwóch małych DataFrames, z których każda może uratować to_excel indywidualnie), wyjątek jest podniesiona (edycja: traceback zdjęta):

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

Przypuszczalnie ja nie nawołuję ExcelWriter poprawnie, jak powinny Jestem w tym celu?

Odpowiedz

74

należy używać pandy właścicielem ExcelWriter Klasa:

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

Następnie funkcja save_xls działa zgodnie z oczekiwaniami:

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

... co za narzędzie! –

+0

dlaczego nie tylko 'df.to_excel ('file_path')'? – root

+0

@root Nie sądzę, że działa na liście ramek danych? –

Powiązane problemy