複数のpd.DataFrameを1つのExcelの複数シートで保存する。

スポンサーリンク

こんな感じのデータフレームがあったとして

import numpy as npimport pandas as pdimport osdf = pd.DataFrame([{'col_0': "A", 'col_1': 1, 'col_2': np.nan},                    {'col_0': "A", 'col_1': 4, 'col_2': 5},                    {'col_0': "B", 'col_1': 7, 'col_2': 8},                    {'col_0': "B", 'col_1': 9, 'col_2': 6}])df
dfの中身

col_0の値ごとにシートを分けてexcelに保存したいとする。
そんなときのソース。

mode=’a’というのがポイント。appendのa

# Cドライブ直下の場合(保存場所は任意のパスに変更)dir='C:\'sheet_names = df['col_0'].unique().tolist()savename = os.path.join("dir", "hogehoge.xlsx")if os.path.exists(savename):    os.remove(savename)for sheet_name in sheet_names:    cdf = df.query('col_0 == @sheet_name')    if os.path.exists(savename):        with pd.ExcelWriter(savename, engine="openpyxl", mode="a") as writer:            cdf.to_excel(writer, sheet_name=sheet_name, index=False)    else:        with pd.ExcelWriter(savename, engine="openpyxl") as writer:            cdf.to_excel(writer, sheet_name=sheet_name, index=False)