python Dimoraデータ整理 2026-09-10-2
# python
# Dimora
# DIGA
# ONLINE Backup
にゃあw 3部作・・・
# ==============================
# ==== Dimora 録画番組処理
# ==== Step 2 csv to Excel
# 2026/09/02 22:08:25
# 【Gemini】様
# エラーなく正常に動作しているとのこと、素晴らしいです!
# コード全体の流れや記述は非常に丁寧で分かりやすく書かれています。
# さらに**処理速度の向上・予期せぬエラー(警告)の防止・メンテナンス性の改善**の観点から、修正・改善したほうが良いポイントをいくつか提案させていただきます。
# ==========================================================
# 1. ライブラリの読み込み(一番上におく!)
# ==========================================================
import os
import numpy as np
import pandas as pd
# ==========================================================
# 3. カレントディレクトリの変更 ★絶対死守★
# ==========================================================
script_dir = os.path.dirname(os.path.abspath(__file__))
os.chdir(script_dir)
print(f"Current directory: {os.getcwd()}")
# ==========================================
# 設定パラメータ(ここだけ書き換える!)
# ==========================================
MODE = 1 # 2: 本体 / 2: USB-1 / 3: USB-2
# 共通パラメータ
INPUT_FILE = "UTF-RecList-Replace済.csv"
SORT_KEY = "ジャンル"
# モードに応じた自動分岐(辞書マッピング)
CONFIG_MAP = {
1: {"key": "本体", "file": "UTF-2W101-本体-ONLY-SORT.xlsx"},
2: {"key": "USB-1", "file": "UTF-2W101-USB-1-ONLY-SORT.xlsx"},
3: {"key": "USB-2", "file": "UTF-2W101-USB-2-ONLY-SORT.xlsx"},
}
# 選択された設定を取得
config = CONFIG_MAP.get(MODE)
if config:
OUTPUT_KEY = config["key"]
OUTPUT_FILE = config["file"]
else:
raise ValueError("無効なMODEが設定されています。1〜3を指定してください。")
# ==============================
# 表示設定
pd.set_option("display.max_columns", None)
pd.set_option("display.max_rows", 2000)
# CSV読み込み
df_hdd = pd.read_csv(INPUT_FILE, encoding="utf-8")
# INDEX 番号1始まり(※Excel出力時に index=False にする場合は画面表示時のみ効果を発揮します)
df_hdd.index = df_hdd.index + 1
# ==== 列追加
# assignを使えばまとめてすっきり追加できます
new_cols = ["頁", "行", "収録時間", "MODE-2", "検索ワード", "MB"]
for col in new_cols:
df_hdd[col] = np.nan
# ==== 不要列削除 & 抽出・並び替え
df_dell = df_hdd.drop(columns=["DMR-", "視聴/未"])
# 録画先でフィルタリングを先に行う(エラー・警告防止)
df_filtered = df_dell[df_dell["録画先"] == OUTPUT_KEY]
# ソート処理
df_sort = df_filtered.sort_values(by=SORT_KEY) # 昇順
# 最終的に残したい列を指定して抽出
output_columns = [
"放送開始日時",
"放送局名称",
"番組タイトル_番組タイトル",
"頁",
"行",
"収録時間",
"MODE",
"検索ワード",
"分",
"ジャンル",
"録画先",
"MODE-2",
"MB",
]
output_df = df_sort[output_columns]
# Excel出力(encoding引数は不要 / index=Falseで1始まりインデックスは出力されません)
output_df.to_excel(OUTPUT_FILE, index=False)
print("Excel出力が完了しました!")
# ==============================