"""Clean export of the parsed objective probabilities: data/objective_probs.csv.
Columns: issue (YYYY-MM, 'Mid-<month>' issue), k, season, p_lan/p_neu/p_eln (%), era ('judgment' = IRI forecaster
assessment with quartile categories, before 2011-12; 'objective' from 2011-12), corrected (1 = replaced by the
as-issued value, data/asissued_corrections.csv). Future-month duplicates served by the website are dropped."""
import pandas as pd, os
R = os.environ.get('ROOT', '/work/enso-objective')
MON = 'Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec'.split()
d = pd.read_csv(f'{R}/data/objective_probs_raw.csv').rename(columns={'#0000ff': 'p_lan', '#aaaaaa': 'p_neu', '#ff0000': 'p_eln'})
t = d.title.str[-4:] + '-' + d.title.str[4:7].map({m: f'{i + 1:02d}' for i, m in enumerate(MON)}); d = d[t == d.issue].copy()
d = d[['issue', 'k', 'season', 'p_lan', 'p_neu', 'p_eln']]; d['corrected'] = 0
cor = pd.read_csv(f'{R}/data/asissued_corrections.csv')
for _, r in cor.iterrows():
    m = (d.issue == r.issue) & (d.season == r.season); d.loc[m, ['p_lan', 'p_neu', 'p_eln']] = [r.lan, r.neu, r.eln]; d.loc[m, 'corrected'] = 1
d['era'] = (d.issue >= '2011-12').map({True: 'objective', False: 'judgment'})
d.to_csv(f'{R}/data/objective_probs.csv', index=False); print(len(d), 'rows', d.issue.nunique(), 'issues', d.corrected.sum(), 'corrected')
