DataFrameのリストを1つのExcelスプレッドシートにエクスポートするにはどうすればよいですか?
_to_Excel
_ 状態のドキュメント:
ノート
既存のExcelWriterオブジェクトを渡す場合、シートは既存のワークブックに追加されます。これを使用して、異なるDataFrameを1つのワークブックに保存できます。
writer = ExcelWriter('output.xlsx')
df1.to_Excel(writer, 'sheet1')
df2.to_Excel(writer, 'sheet2')
writer.save()
これに続いて、次のようにDataFramesのリストを1つのスプレッドシートに保存する関数を作成できると考えました。
_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()
_
ただし、それぞれが_to_Excel
_を個別に保存できる2つの小さなDataFrameのリストを使用すると、例外が発生します(Edit:traceback removed):
_AttributeError: 'str' object has no attribute 'worksheets'
_
おそらく ExcelWriter
を正しく呼び出していませんが、これを行うにはどうすればよいですか?
pandas own ExcelWriter
クラスを使用する必要があります。
from pandas import ExcelWriter
# from pandas.io.parsers import ExcelWriter
そうして save_xls
関数は期待どおりに機能します。
def save_xls(list_dfs, xls_path):
with ExcelWriter(xls_path) as writer:
for n, df in enumerate(list_dfs):
df.to_Excel(writer,'sheet%s' % n)
writer.save()
誰かがデータフレームの辞書でこれを行う方法の例を必要とする場合:
_from pandas import ExcelWriter
def save_xls(dict_df, path):
"""
Save a dictionary of dataframes to an Excel file, with each dataframe as a seperate page
"""
writer = ExcelWriter(path)
for key in dict_df:
dict_df[key].to_Excel(writer, key)
writer.save()
_
例:save_xls(dict_df = my_dict, path = '~/my_path.xls')