複数のExcelファイル(csv,xlsx)から指定したセル範囲のデータを集めて1つのファイルに出力する
表題の通り
以下の例では複数のCSVファイルから、セル範囲D2~H2までの行のデータを集めて1つのファイルに出力します
ただし行の先頭にファイル名を付けた
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | import pandas as pd import os # ディレクトリ内のCSVファイルをすべて取得 input_directory = 'path/to/csv/files' # CSVファイルが保存されているディレクトリのパス output_file = 'path/to/output/file.csv' # 出力するファイルのパス # 空のDataFrameを作成 all_data = pd.DataFrame(columns=['Filename', 'D2', 'E2', 'F2', 'G2', 'H2']) # ディレクトリ内のすべてのCSVファイルを処理 for filename in os.listdir(input_directory): if filename.endswith('.csv'): file_path = os.path.join(input_directory, filename) # CSVファイルを読み込み、2行目のデータを取得 df = pd.read_csv(file_path, header=None, skiprows=1, usecols=[3, 4, 5, 6, 7], nrows=1) df.columns = ['D2', 'E2', 'F2', 'G2', 'H2'] # ファイル名の列を追加 df['Filename'] = filename # データを結合 all_data = pd.concat([all_data, df[['Filename', 'D2', 'E2', 'F2', 'G2', 'H2']]], ignore_index=True) # 結合したデータを新しいCSVファイルに書き出し all_data.to_csv(output_file, index=False) print("データの集約が完了しました。") |
ちなみに、Windowsだとパスを r’C:\path\to\csv’ みたいにクオーテーションの前にrを付けないといけないらしい。知らなかった
ありがとうGPT-4
最近のコメント