【調整さんをまとめたい】ふたつのCSVファイルを一つにまとめるスクリプト

調整さんで出欠を取得するとき、複数のページで取得したものをひとつにまとめたいときがある。簡単にまとめるスクリプトを準備する。

Apr 3, 2025
ふたつのCSVファイルを一つにまとめるスクリプトDB
Table view
スクラップ
Created time

はじめに 20250404 9:19

 
調整さんというサイトで参加不参加の出欠を取得している。
 
 
会員登録不要で、簡単に○×△を取得出来てとても便利。
結果もCSVでダウンロード出来て、Excelなどを使えば自由に整形もできる。
 

経緯

 
複数イベントで出欠をとった結果をまとめて検討したいときに、ひとつのファイルにまとめたかった。
ふたつのCSVファイルを一つにまとめるスクリプトを準備する。
 

前提

 
  • pythonスクリプトが使える環境を準備する
    • ここでは「Git bash」を使っている。
    • pandasなど必要なモジュールもインストールしておく
 

スクリプトの作成と実行

 

まとめるCSVの確認

 
調整さんからCSVをダウンロードすると、下記のようなファイルが取得出来る。
 
CSVファイル01
参加者,4/5(土) :13:00-21:00,4/20(日) :13:00-21:00 Aさん,◯,△ Bくん,◯,△
 
CSVファイル02
参加者,4/26(土) :13:00-21:00,コメント01 Aさん,◯,4/20休憩 Bくん,◯,
 
同じ参加者の項目はまとめて横に繋げたい。
(データベースっぽく言うと「完全外部結合」)
 

まとめるスクリプトの準備

 
merge_csv.py
# -*- coding: utf-8 -*- import pandas as pd import sys def get_file_names(): """ コマンドライン引数からCSVファイル名を取得します。 Returns ------- tuple CSVファイル名のタプル (file1_name, file2_name) """ if len(sys.argv) != 3: print("Usage: python merge_csv.py file1.csv file2.csv") print("使い方:") print(" - このスクリプトは、2つのCSVファイルを「参加者」という項目をキーに完全外部結合します。") print(" - 結果は「merged_result.csv」という名前で保存されます。") sys.exit(1) file1_name = sys.argv[1] file2_name = sys.argv[2] return file1_name, file2_name def load_csv_files(file1_name, file2_name): """ 指定されたCSVファイルを読み込みます。 Parameters ---------- file1_name : str ファイル1の名前 file2_name : str ファイル2の名前 Returns ------- tuple 読み込んだデータフレームのタプル (df1, df2) Raises ------ FileNotFoundError ファイルが見つからない場合に発生 """ try: df1 = pd.read_csv(file1_name, encoding='utf-8') df2 = pd.read_csv(file2_name, encoding='utf-8') except FileNotFoundError: print("ファイルが見つかりません。") sys.exit(1) return df1, df2 def merge_dataframes(df1, df2): """ 「参加者」をキーに完全外部結合を行います。 Parameters ---------- df1 : pandas.DataFrame データフレーム1 df2 : pandas.DataFrame データフレーム2 Returns ------- pandas.DataFrame 結合されたデータフレーム """ # 「参加者」をキーに完全外部結合 merged_df = pd.merge(df1, df2, on='参加者', how='outer') return merged_df def save_to_csv(merged_df): """ 結合されたデータフレームをCSVファイルに保存します。 Parameters ---------- merged_df : pandas.DataFrame 結合されたデータフレーム """ # 新しいCSVファイル名を指定 output_file = "merged_result.csv" # UTF-8 BOM付きで保存 merged_df.to_csv(output_file, index=False, encoding='utf-8-sig') def main(): """ メイン処理。コマンドライン引数からファイル名を取得し、CSVファイルを読み込み、結合し、保存します。 """ file1_name, file2_name = get_file_names() df1, df2 = load_csv_files(file1_name, file2_name) merged_df = merge_dataframes(df1, df2) save_to_csv(merged_df) if __name__ == "__main__": main()
 

実行してみる

 
同一フォルダ内に作成したスクリプトとマージしたいふたつのCSVファイルを配置する。
 
notion image
 
引数無しで実行すると使い方が表示される。
$ python merge_csv.py Usage: python merge_csv.py file1.csv file2.csv 使い方: - このスクリプトは、2つのCSVファイルを「参加者」という項目をキーに完全外部結合します。 - 結果は「merged_result.csv」という名前で保存されます。
 
問題なく実行されれば何も表示されない。
$ ls 202504_出欠確認01.csv BK/ file02.csv 202504_出欠確認02.csv file01.csv merge_csv.py $ python merge_csv.py file01.csv file02.csv $ ls 202504_出欠確認01.csv BK/ file02.csv merged_result.csv 202504_出欠確認02.csv file01.csv merge_csv.py
 

作成されたCSVを確認する

 
merged_result.csv
Excelでひらくとこんな感じ。
 
notion image
 
これで複数ファイルをひとつにまとめることができた。
 

まとめ

 
これで複数の調整さんCSVを一つにまとめることができた