James McCool commited on
Commit
c34709f
·
1 Parent(s): 3f10760

Refactor optimal lineup export logic to apply salary and team count filters before converting player names to IDs, ensuring accurate data processing for DraftKings and FanDuel. Update column mappings for NBA and WNBA to reflect new player positions.

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +31 -28
src/streamlit_app.py CHANGED
@@ -1168,7 +1168,7 @@ if selected_tab == 'Optimals':
1168
  if site_var == 'Draftkings':
1169
  if type_var == 'Regular':
1170
  if sport_var == 'NBA':
1171
- map_columns = ['PG', 'PG', 'SG', 'SG', 'SF', 'SF', 'PF', 'PF', 'C']
1172
  elif sport_var == 'WNBA':
1173
  map_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
1174
  for col_idx in map_columns:
@@ -1182,7 +1182,7 @@ if selected_tab == 'Optimals':
1182
  if sport_var == 'NBA':
1183
  map_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']
1184
  elif sport_var == 'WNBA':
1185
- map_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
1186
  for col_idx in map_columns:
1187
  data_export[col_idx] = data_export[col_idx].map(fd_id_map)
1188
  elif type_var == 'Showdown':
@@ -1245,10 +1245,35 @@ if selected_tab == 'Optimals':
1245
  if st.button("Prepare full data export (Filtered)", key='data_export_filtered_button'):
1246
  name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
1247
  data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1248
  if site_var == 'Draftkings':
1249
  if type_var == 'Regular':
1250
  if sport_var == 'NBA':
1251
- map_columns = ['PG', 'PG', 'SG', 'SG', 'SF', 'SF', 'PF', 'PF', 'C']
1252
  elif sport_var == 'WNBA':
1253
  map_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
1254
  for col_idx in map_columns:
@@ -1263,35 +1288,13 @@ if selected_tab == 'Optimals':
1263
  if sport_var == 'NBA':
1264
  map_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']
1265
  elif sport_var == 'WNBA':
1266
- map_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
1267
  for col_idx in map_columns:
1268
  data_export[col_idx] = data_export[col_idx].map(fd_id_map)
1269
  elif type_var == 'Showdown':
1270
  map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
1271
  for col_idx in map_columns:
1272
  data_export[col_idx] = data_export[col_idx].map(fd_sd_id_map)
1273
-
1274
- data_export = data_export[data_export['salary'] >= salary_min_var]
1275
- data_export = data_export[data_export['salary'] <= salary_max_var]
1276
- data_export = data_export[data_export['Team_count'] >= min_stacks_var]
1277
- data_export = data_export[data_export['Team_count'] <= max_stacks_var]
1278
- if site_var == 'Draftkings':
1279
- data_export = map_mask_parse(data_export, dict(zip(raw_baselines['Player'], raw_baselines['Median'])), projection_var, site_var)
1280
- data_export = map_mask_parse(data_export, dict(zip(raw_baselines['Player'], raw_baselines['Own'])), ownership_var, site_var)
1281
- elif site_var == 'Fanduel':
1282
- data_export = map_mask_parse(data_export, dict(zip(raw_baselines['Player'], raw_baselines['Median'])), projection_var, site_var)
1283
- data_export = map_mask_parse(data_export, dict(zip(raw_baselines['Player'], raw_baselines['Own'])), ownership_var, site_var)
1284
-
1285
- name_export = name_export[name_export['salary'] >= salary_min_var]
1286
- name_export = name_export[name_export['salary'] <= salary_max_var]
1287
- name_export = name_export[name_export['Team_count'] >= min_stacks_var]
1288
- name_export = name_export[name_export['Team_count'] <= max_stacks_var]
1289
- if site_var == 'Draftkings':
1290
- name_export = map_mask_parse(name_export, dict(zip(raw_baselines['Player'], raw_baselines['Median'])), projection_var, site_var)
1291
- name_export = map_mask_parse(name_export, dict(zip(raw_baselines['Player'], raw_baselines['Own'])), ownership_var, site_var)
1292
- elif site_var == 'Fanduel':
1293
- name_export = map_mask_parse(name_export, dict(zip(raw_baselines['Player'], raw_baselines['Median'])), projection_var, site_var)
1294
- name_export = map_mask_parse(name_export, dict(zip(raw_baselines['Player'], raw_baselines['Own'])), ownership_var, site_var)
1295
 
1296
  reg_opt_col, pm_opt_col = st.columns(2)
1297
  with reg_opt_col:
@@ -1381,7 +1384,7 @@ if selected_tab == 'Optimals':
1381
  if site_var == 'Draftkings':
1382
  if type_var == 'Regular':
1383
  if sport_var == 'NBA':
1384
- map_columns = ['PG', 'PG', 'SG', 'SG', 'SF', 'SF', 'PF', 'PF', 'C']
1385
  elif sport_var == 'WNBA':
1386
  map_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
1387
  for col_idx in map_columns:
@@ -1395,7 +1398,7 @@ if selected_tab == 'Optimals':
1395
  if sport_var == 'NBA':
1396
  map_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']
1397
  elif sport_var == 'WNBA':
1398
- map_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
1399
  for col_idx in map_columns:
1400
  export_file[col_idx] = export_file[col_idx].map(fd_id_map)
1401
  elif type_var == 'Showdown':
 
1168
  if site_var == 'Draftkings':
1169
  if type_var == 'Regular':
1170
  if sport_var == 'NBA':
1171
+ map_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']
1172
  elif sport_var == 'WNBA':
1173
  map_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
1174
  for col_idx in map_columns:
 
1182
  if sport_var == 'NBA':
1183
  map_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']
1184
  elif sport_var == 'WNBA':
1185
+ map_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
1186
  for col_idx in map_columns:
1187
  data_export[col_idx] = data_export[col_idx].map(fd_id_map)
1188
  elif type_var == 'Showdown':
 
1245
  if st.button("Prepare full data export (Filtered)", key='data_export_filtered_button'):
1246
  name_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
1247
  data_export = pd.DataFrame(st.session_state.working_seed.copy(), columns=column_names)
1248
+
1249
+ # Apply filters BEFORE converting to IDs
1250
+ data_export = data_export[data_export['salary'] >= salary_min_var]
1251
+ data_export = data_export[data_export['salary'] <= salary_max_var]
1252
+ data_export = data_export[data_export['Team_count'] >= min_stacks_var]
1253
+ data_export = data_export[data_export['Team_count'] <= max_stacks_var]
1254
+ if site_var == 'Draftkings':
1255
+ data_export = map_mask_parse(data_export, dict(zip(raw_baselines['Player'], raw_baselines['Median'])), projection_var, site_var)
1256
+ data_export = map_mask_parse(data_export, dict(zip(raw_baselines['Player'], raw_baselines['Own'])), ownership_var, site_var)
1257
+ elif site_var == 'Fanduel':
1258
+ data_export = map_mask_parse(data_export, dict(zip(raw_baselines['Player'], raw_baselines['Median'])), projection_var, site_var)
1259
+ data_export = map_mask_parse(data_export, dict(zip(raw_baselines['Player'], raw_baselines['Own'])), ownership_var, site_var)
1260
+
1261
+ name_export = name_export[name_export['salary'] >= salary_min_var]
1262
+ name_export = name_export[name_export['salary'] <= salary_max_var]
1263
+ name_export = name_export[name_export['Team_count'] >= min_stacks_var]
1264
+ name_export = name_export[name_export['Team_count'] <= max_stacks_var]
1265
+ if site_var == 'Draftkings':
1266
+ name_export = map_mask_parse(name_export, dict(zip(raw_baselines['Player'], raw_baselines['Median'])), projection_var, site_var)
1267
+ name_export = map_mask_parse(name_export, dict(zip(raw_baselines['Player'], raw_baselines['Own'])), ownership_var, site_var)
1268
+ elif site_var == 'Fanduel':
1269
+ name_export = map_mask_parse(name_export, dict(zip(raw_baselines['Player'], raw_baselines['Median'])), projection_var, site_var)
1270
+ name_export = map_mask_parse(name_export, dict(zip(raw_baselines['Player'], raw_baselines['Own'])), ownership_var, site_var)
1271
+
1272
+ # NOW convert player names to IDs after filtering
1273
  if site_var == 'Draftkings':
1274
  if type_var == 'Regular':
1275
  if sport_var == 'NBA':
1276
+ map_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']
1277
  elif sport_var == 'WNBA':
1278
  map_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
1279
  for col_idx in map_columns:
 
1288
  if sport_var == 'NBA':
1289
  map_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']
1290
  elif sport_var == 'WNBA':
1291
+ map_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
1292
  for col_idx in map_columns:
1293
  data_export[col_idx] = data_export[col_idx].map(fd_id_map)
1294
  elif type_var == 'Showdown':
1295
  map_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
1296
  for col_idx in map_columns:
1297
  data_export[col_idx] = data_export[col_idx].map(fd_sd_id_map)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1298
 
1299
  reg_opt_col, pm_opt_col = st.columns(2)
1300
  with reg_opt_col:
 
1384
  if site_var == 'Draftkings':
1385
  if type_var == 'Regular':
1386
  if sport_var == 'NBA':
1387
+ map_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']
1388
  elif sport_var == 'WNBA':
1389
  map_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
1390
  for col_idx in map_columns:
 
1398
  if sport_var == 'NBA':
1399
  map_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']
1400
  elif sport_var == 'WNBA':
1401
+ map_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
1402
  for col_idx in map_columns:
1403
  export_file[col_idx] = export_file[col_idx].map(fd_id_map)
1404
  elif type_var == 'Showdown':