仮RPGの進捗ノート20250120-20250126
仮RPGの進捗を記載するノートです。20250120-20250126分。
調整さんで出欠を取得するとき、複数のページで取得したものをひとつにまとめたいときがある。簡単にまとめるスクリプトを準備する。
参加者,4/5(土) :13:00-21:00,4/20(日) :13:00-21:00 Aさん,◯,△ Bくん,◯,△
参加者,4/26(土) :13:00-21:00,コメント01 Aさん,◯,4/20休憩 Bくん,◯,
# -*- 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()
$ 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