60歳からITエンジニアを目指す無謀なブログ

60歳で定年し、職種を変更してIT技術者を目指すブログです。

Pandas 複数フレームの連結 (MAC OS)

備忘録として、Pandasの複数データフレームをリードして、連結して1つの大きなデータフレームを作成する方法を説明します。

ターゲットディレクトリ target_dir 配下に複数のCSVファイルがあり、それを

データフレームとしてリードして連結することを想定します。

import pandas as pd

import glob

target_dir = /hoge/fuga/

csv_list = glob.glob(target_dir + '/*.csv') # CSV fileのリストを取得します。

csv_list.sort() #一旦ソートします

#連結用カラム名だけのデータフレームを作成します。

df = pd.read_csv(csv_list[0], encoding='utf8',index_col='No') #1つだけリード
df.drop(df.index[0:], inplace = True) #1行目から最終行目まで削除し、上書き保存

for i in csv_list : #CSVファイルリスト分のファイルリードを繰り返します
   target = pd.read_csv(i,encoding='utf8',index_col='No')
   df = pd.concat([df,target])              #dfとtargetの縦方向連結

 

appendでもやってみましたが、Warningが出て、concatを使うように推奨されます。

 

因みにWindowsから持ってきたcsvファイルだったのでターミナル上で

nkf -w --overwrite  ./*   

でcp932文字コードからUTF8文字コードに変換しておきました