【Pythonサンプルコード】複数のエクセルファイルを1つにまとめる方法
Pythonのpandasを用いて列名が同じ別々のエクセルファイルを一つにまとめる方法をご紹介します
今回扱うファイル
今回扱うファイルは同じ列名のカラムにそれぞれ別の行データが入ったものとなっています。
DBのレコードによくあるこの様なデータです。
サンプルコード
import numpy as np import pandas as pd import glob # ファイルリスト取得 file_list=glob.glob("レコード/*.xlsx") # pandasのデータフレーム化 df = pd.DataFrame() for file in file_list: df2 = pd.read_excel(file, parse_dates=True,index_col=0) df2 = df2.replace(np.nan,' ', regex=True) df = pd.concat([df, df2]) # 一つにまとめたエクセルファイルを保存 df.to_excel('note_hashtag_2020_02_22_all.xlsx')
コードの説明
file_list=glob.glob("レコード/*.xlsx")
ここでは「レコード」フォルダの中に入っている「.xlsx」のファイルリストを取得しています
df = pd.DataFrame()
まず空のデータフレームを作成し、これにそれぞれの.xlsxファイルの内容をどんどん追加していきます。
df2 = pd.read_excel(file, parse_dates=True,index_col=0)
ここではpd.read_excel()関数を使ってエクセルファイルを読み込んでいます。
※なおCSVを読み込みたい場合は代わりに「pd.read_csv()関数」を使うとよいです
df2 = df2.replace(np.nan,' ', regex=True)
読み込んだ.xlsxに欠損値が合った場合に欠損値を埋める処理を行っています
df = pd.concat([df, df2])
ここでは pd.concat()関数を使ってデータフレームを結合しています
df.to_excel('note_hashtag_2020_02_22_all.xlsx')
最後に一つにまとめたエクセルファイルを保存して完了です
ファイル名を列として追加する場合
import numpy as np import pandas as pd import glob # ファイルリスト取得 file_list=glob.glob("レコード/*.xlsx") # pandasのデータフレーム化 df = pd.DataFrame() for file in file_list: df2 = pd.read_excel(file, parse_dates=True,index_col=0) df2 = df2.replace(np.nan,' ', regex=True) df2["file_name"] = file df = pd.concat([df, df2]) df.to_excel('note_hashtag_2020_02_22_all.xlsx')
df2["file_name"] = file
この部分で列を足しています