1つのファイルから目的別の複数ファイルに分割したい。例えば、エクセル1BOOKに10万行データがあって、宛先毎にエクセルファイルを分けたいケースです。宛先件数が多いほど、別BOOKに保存する作業は大変なので、自動化したい作業です。
本記事では、約2,000行のcsvファイルを読み込んで特定Keyを対象にファイル分割するプログラムをご紹介します。
目次
1つのcsvやExcelを特定Keyで分割するプログラム
ライブラリのインストール
import pandas as pd
pandasがない方は下記コマンドでインストール
pip install pandas
上記でインストールできない場合はPythonでpip installが使えない時のプロキシとSSL無視をご覧くださいませ。
今回利用するデータ表示とカテゴリIDで分割する方法の説明
今回の利用データは下記です。一番左のカテゴリIDをKeyにファイルを分割するプログラムを組みました。

1ファイルを分割するPython関数
プログラムを関数化し、必用情報を入力するだけでアウトプットできるようにしました。必要情報は下記。分割後のファイルは指定したフォルダ配下に格納されるようにして、ファイル名は「ファイル名+カテゴリID」としました。
- sep_key(複数ファイルに分けるためのKey 例:宛先や管理NOなど)
- input_csv(分割元のファイルpath)
- rezult_dir(分割ファイルを配置するフォルダpath)
#関数
def sep_csv(sep_key,input_csv,rezult_dir):
#ファイル読み込み
df1=pd.read_csv(input_file)
#①ファイル分割するkeyを指定する
sep_key_1=df1[[sep_key]].drop_duplicates()
#②keyを元にファイル分割実行
[df1[df1[sep_key]==i[0]].to_csv(rezult_dir + "ファイル名" +str(i[0] ) + ".csv",index=False) for i in df1.values.tolist()]
return
#②keyを元にファイル分割実行の処理でループ処理を回して、カテゴリIDをKeyとしてファイル分割・保存をしています。
今回の処理はcsvで書きましたが、エクセルの場合はpd.read_excelを使えばよいです。その他にも文字コードの指定など場合によっては必要です。
指定フォルダにファイル分割された様子です。ファイル名の後にカテゴリIDをつけています。
