Pythonなら、たった10行で複数のCSVが結合できる。しかもヘッダー付きで。
そんなコードを紹介していこう。
CSVを結合する前の準備
pip install pandas
準備はpandasを入れるだけ。コマンドプロンプトを開いてインストール。
準備ができたらつぎでコードを書いていこう。
CSVをヘッダー付きで複数のCSVを結合する
import pandas as pd import glob folder_path = r"C:\Users\[username]\Desktop\test" files = glob.glob(folder_path + "\*.csv") lists = [] for file in files: df = pd.read_csv(file, index_col=None, header=0) lists.append(df) df = pd.concat(lists, axis=0, ignore_index=True) df.to_csv("output.csv", index=False, encoding='utf-8')
上記のコードをコピペすれば、複数のCSVをヘッダー付きで出力。
少しコードを細かく理解するなら、つぎでざっくり説明しよう。
pandasとglobをインポートする
import pandas as pd import glob
- pandas...データ加工と結合、CSV出力までこなす
- glob...フォルダ内のファイル一覧を取得する
指定フォルダからCSVファイルリストを取得する
folder_path = r"C:\Users\[username]\Desktop\test" files = glob.glob(folder_path + "\*.csv")
- folder_pathで任意のフォルダを指定
- globでフォルダ内のCSVファイル名をすべて取得
リスト(配列)を設定し各CSVデータをリストに格納する
lists = [] for file in files: df = pd.read_csv(file, index_col=None, header=0) lists.append(df)
- 空のリスト(lists)を作成する
- globで作成したCSVファイル名のリストを1つづつ処理する
- dfでCSVデータを取得する
- listsにdfのデータを追加していく
最初のヘッダーだけを残し、1つのデータにまとめCSV出力する
df = pd.concat(lists, axis=0, ignore_index=True) df.to_csv("output.csv", index=False, encoding='utf-8')
- concatで最初のヘッダーだけを残し、すべてのデータをつなげる
- つなげたデータを1つのCSVに出力する