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に出力する
事務作業を自動化してもっと"ラク"しませんか?

あなたの会社の事務作業...効率化してラクに。もっと重要な業務に集中できるようになります。

日々増えるルーティンの事務作業...
「この作業めんどくさい...」
「事務作業に時間をとられて他に集中できない...」

あなたの代わりにVBAを使ってパソコン業務を自動化。あなたはもっと価値のあることに時間を使うことができるため売上UP、ムダなコストの削減が期待できます。

また、作って終わりではなくつぎの3つのことを約束します。

  • しっかりドキュメント作成
  • きれいな見やすいコードでムダな工数カット
  • できるだけボタン1つポチッと押すだけで業務が完了

どんなにささいなめんどくさい事務作業でも相談してください。相談は無料です。
3年の業務効率化実績があるため、力になれるかもしれません。

※件名には「業務効率化の相談」と記載ください。できるだけ24時間以内に返信します。