Pythonで指定フォルダ内すべてのCSVをヘッダー付きで結合する方法

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")
  1. folder_pathで任意のフォルダを指定
  2. globでフォルダ内のCSVファイル名をすべて取得

リスト(配列)を設定し各CSVデータをリストに格納する

lists = []

for file in files:
    df = pd.read_csv(file, index_col=None, header=0)
    lists.append(df)
  1. 空のリスト(lists)を作成する
  2. globで作成したCSVファイル名のリストを1つづつ処理する
  3. dfでCSVデータを取得する
  4. listsにdfのデータを追加していく

最初のヘッダーだけを残し、1つのデータにまとめCSV出力する

df = pd.concat(lists, axis=0, ignore_index=True)
df.to_csv("output.csv", index=False, encoding='utf-8')
  1. concatで最初のヘッダーだけを残し、すべてのデータをつなげる
  2. つなげたデータを1つのCSVに出力する