diff --git a/sanguo_factor/fundamental_adapter.py b/sanguo_factor/fundamental_adapter.py index efe6c84..d0b23ec 100644 --- a/sanguo_factor/fundamental_adapter.py +++ b/sanguo_factor/fundamental_adapter.py @@ -169,10 +169,13 @@ def _load_statements(codes: list[str], data_dir: str) -> pl.DataFrame: if df is None: continue df = _norm_dates(df, _DATE_COLS) - frames.append(df.with_columns(pl.lit(vt).alias("vt_symbol"))) + # 先统一列序/列集再入列(各股文件 schema 子集不同,concat 前必须对齐) + frames.append( + df.with_columns(pl.lit(vt).alias("vt_symbol")) + .select(["vt_symbol", *_DATE_COLS, *raw_cols])) if not frames: continue - merged = pl.concat(frames).select(["vt_symbol", *_DATE_COLS, *raw_cols]) + merged = pl.concat(frames) if table == "balance": short = {c: c for c in raw_cols} else: