| 123456789101112131415161718192021222324252627282930313233 |
- import pandas as pd
- from pathlib import Path
- def resolve_path(project_root: Path, relative_path: str) -> Path:
- return project_root / relative_path
- def load_all_units_cycles(cfg: dict) -> pd.DataFrame:
- """
- 读取所有启用 UF 机组的 filtered_cycles 数据,
- 返回【物理周期层级】的合并 DataFrame。
- """
- project_root = Path(cfg["Paths"]["project_root"])
- raw_cfg = cfg["Paths"]["raw_data"]
- all_dfs = []
- for unit in raw_cfg["enabled_units"]:
- file_name = raw_cfg["cycle_file_pattern"].format(unit=unit)
- file_path = resolve_path(
- project_root,
- raw_cfg["filtered_cycles_dir"]
- ) / file_name
- if not file_path.exists():
- raise FileNotFoundError(f"未找到 UF{unit} 数据文件: {file_path}")
- df_unit = pd.read_csv(file_path)
- df_unit["unit_id"] = unit # 仅用于分组,不进入状态
- all_dfs.append(df_unit)
- return pd.concat(all_dfs, ignore_index=True)
|