diadia

興味があることをやってみる。自分のメモを残しておきます。

python csvファイルを結合

csvを結合する方法

  • ライブラリpandasを使う方法
  • open関数を使う方法

ライブラリpandasを使う方法

import pandas as pd

csv_list = ['csv1_path', 'csv2_path', 'csv3_path', 'csv4_path']
pd_list  = [pd.read_csv(file) for file in csv_list]
df       = pd.concat(pd_list)
df.to_csv("hoge.csv", index=False, encoding="utf-8")

この方法は時間がかかる恐れがある。以下の方法もあるので試してみる。どちらが速いか分かったら追記しようと思う。

open関数を使う方法

下記の方法はpandasを使った場合と同様、一番目のファイルのヘッダーは残し、追加するファイルのヘッダーは削除して追加するやり方になる。ヘッダーを排除するためにreadlines()で各行をリスト化し、ヘッダーを削除したリストとして[1:-1]でスライスしている。この方法を使うとpandasより速くできるか検証が必要である。

merge_csv_list = ['csv1_path', 'csv2_path', 'csv3_path', 'csv4_path']

for n in range(0,len(merge_csv_list)):
    if n == 0:  
        base_file = open(merge_csv_list[0], "a", encoding="utf-8")
        continue
    else:
        add_file = open(merge_csv_list[n], "r", encoding="utf-8")
        base_file.write(",".join(add_file.readlines()[1:-1]))
        add_file.close()
        continue
base_file.close()