pablogrois Claude Fable 5 commited on
Commit
f260be9
·
1 Parent(s): 1599a55

Zone rebuild tolerante a columnas faltantes en el preprocessed

Browse files

Ligas sin enriquecer no traen home/away_team_id u otras columnas: se leen las
disponibles y el resto queda NaN (el head-to-head cae al lookup legacy en vez
de romper la reconstrucción de zones).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

vendor/scripts/generate_real_sociedad_b_reports.py CHANGED
@@ -125,11 +125,21 @@ def build_zone_features_from_preprocessed() -> pd.DataFrame:
125
  "outcome_value",
126
  "pvAdded",
127
  ]
128
- work = pd.read_csv(PREPROCESSED_PATH, usecols=usecols, low_memory=False).copy()
 
 
 
 
 
 
 
 
 
129
  work["matchId"] = work["matchId"].astype(str)
130
  work["teamId"] = work["teamId"].astype(str)
131
- work["home_team_id"] = work["home_team_id"].astype(str)
132
- work["away_team_id"] = work["away_team_id"].astype(str)
 
133
  work["sequenceId"] = pd.to_numeric(work["sequenceId"], errors="coerce")
134
  work = work.dropna(subset=["sequenceId"]).copy()
135
  work["sequenceId"] = work["sequenceId"].astype(int).astype(str)
 
125
  "outcome_value",
126
  "pvAdded",
127
  ]
128
+ # Tolerante a columnas faltantes: algunas ligas viejas/sin enriquecer no traen todas
129
+ # (p.ej. home/away_team_id). Se leen las disponibles y el resto queda NaN — el
130
+ # head-to-head cae entonces al lookup de roles legacy en vez de romper acá.
131
+ header = pd.read_csv(PREPROCESSED_PATH, nrows=0)
132
+ header_cols = {c.strip().lstrip("") for c in header.columns}
133
+ presentes = [c for c in usecols if c in header_cols]
134
+ work = pd.read_csv(PREPROCESSED_PATH, usecols=presentes, low_memory=False).copy()
135
+ for c in usecols:
136
+ if c not in work.columns:
137
+ work[c] = np.nan
138
  work["matchId"] = work["matchId"].astype(str)
139
  work["teamId"] = work["teamId"].astype(str)
140
+ if work["home_team_id"].notna().any():
141
+ work["home_team_id"] = work["home_team_id"].astype(str)
142
+ work["away_team_id"] = work["away_team_id"].astype(str)
143
  work["sequenceId"] = pd.to_numeric(work["sequenceId"], errors="coerce")
144
  work = work.dropna(subset=["sequenceId"]).copy()
145
  work["sequenceId"] = work["sequenceId"].astype(int).astype(str)