fix(factor): 三表跨股concat列序对齐——各股schema子集不同致vstack错配(真数据冒烟实锤) [nas]
NAS容器只读冒烟(3真股×2023)暴露: 合成数据列全同未触发,真数据各股文件 schema子集不同(银行模板缺列补尾部),pl.concat在select统一列序之前执行 → ShapeError。修: frames append前先select统一列序/列集。 真数据冒烟同时锁定: 茅台ROE_TTM 34%/银行tacc置NaN(红线生效)/32表达式 全通过引擎/33特征31个覆盖健康;两断供列(ASSET_IMPAIRMENT_LOSS post-2020-09、 OTHER_RECE post-~2021)为数据层采集模板问题,adapter忠实保null,遗留清单在档。 [nas] Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user