James McCool commited on
Commit
3daeb17
·
1 Parent(s): 642b27d

Add CPT/FLEX/Overall focus selection for player locking and removal in Showdown mode in 'app.py', enhancing lineup customization options.

Browse files
Files changed (1) hide show
  1. app.py +83 -26
app.py CHANGED
@@ -1256,6 +1256,8 @@ if selected_tab == 'Manage Portfolio':
1256
  for col in st.session_state['working_frame'].columns:
1257
  if col not in excluded_cols:
1258
  player_names.update(st.session_state['working_frame'][col].unique())
 
 
1259
  player_lock = st.multiselect("Lock players?", options=sorted(list(player_names)), default=[])
1260
  player_remove = st.multiselect("Remove players?", options=sorted(list(player_names)), default=[])
1261
  team_include = st.multiselect("Include teams?", options=sorted(list(set(st.session_state['projections_df']['team'].unique()))), default=[])
@@ -1275,41 +1277,96 @@ if selected_tab == 'Manage Portfolio':
1275
  st.session_state['settings_base'] = False
1276
  parsed_frame = st.session_state['working_frame'].copy()
1277
  if player_remove:
1278
- # Create mask for lineups that contain any of the removed players
1279
- remove_mask = parsed_frame[st.session_state['player_columns']].apply(
1280
- lambda row: not any(player in list(row) for player in player_remove), axis=1
1281
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1282
  parsed_frame = parsed_frame[remove_mask]
1283
 
1284
  if player_lock:
1285
-
1286
- lock_mask = parsed_frame[st.session_state['player_columns']].apply(
1287
- lambda row: all(player in list(row) for player in player_lock), axis=1
1288
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
1289
  parsed_frame = parsed_frame[lock_mask]
1290
 
1291
  if team_include:
1292
- # Create a copy of the frame with player names replaced by teams, excluding SP1 and SP2
1293
- filtered_player_columns = [col for col in st.session_state['player_columns'] if col not in ['SP1', 'SP2']]
1294
- team_frame = parsed_frame[filtered_player_columns].apply(
1295
- lambda x: x.map(st.session_state['map_dict']['team_map'])
1296
- )
1297
- # Create mask for lineups that contain any of the included teams
1298
- include_mask = team_frame.apply(
1299
- lambda row: any(team in list(row) for team in team_include), axis=1
1300
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1301
  parsed_frame = parsed_frame[include_mask]
1302
 
1303
  if team_remove:
1304
- # Create a copy of the frame with player names replaced by teams, excluding SP1 and SP2
1305
- filtered_player_columns = [col for col in st.session_state['player_columns'] if col not in ['SP1', 'SP2']]
1306
- team_frame = parsed_frame[filtered_player_columns].apply(
1307
- lambda x: x.map(st.session_state['map_dict']['team_map'])
1308
- )
1309
- # Create mask for lineups that don't contain any of the removed teams
1310
- remove_mask = team_frame.apply(
1311
- lambda row: not any(team in list(row) for team in team_remove), axis=1
1312
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1313
  parsed_frame = parsed_frame[remove_mask]
1314
 
1315
  if size_include:
 
1256
  for col in st.session_state['working_frame'].columns:
1257
  if col not in excluded_cols:
1258
  player_names.update(st.session_state['working_frame'][col].unique())
1259
+ if type_var == 'Showdown':
1260
+ cpt_flex_focus = st.selectbox("Focus on Overall, CPT, or FLEX?", options=['Overall', 'CPT', 'FLEX'], index=0)
1261
  player_lock = st.multiselect("Lock players?", options=sorted(list(player_names)), default=[])
1262
  player_remove = st.multiselect("Remove players?", options=sorted(list(player_names)), default=[])
1263
  team_include = st.multiselect("Include teams?", options=sorted(list(set(st.session_state['projections_df']['team'].unique()))), default=[])
 
1277
  st.session_state['settings_base'] = False
1278
  parsed_frame = st.session_state['working_frame'].copy()
1279
  if player_remove:
1280
+ if type_var == 'Showdown':
1281
+ if cpt_flex_focus == 'CPT':
1282
+ remove_mask = parsed_frame[st.session_state['player_columns'][0]].apply(
1283
+ lambda row: not any(player in list(row) for player in player_remove), axis=1
1284
+ )
1285
+ elif cpt_flex_focus == 'FLEX':
1286
+ remove_mask = parsed_frame[st.session_state['player_columns'][1:]].apply(
1287
+ lambda row: not any(player in list(row) for player in player_remove), axis=1
1288
+ )
1289
+ elif cpt_flex_focus == 'Overall':
1290
+ remove_mask = parsed_frame[st.session_state['player_columns']].apply(
1291
+ lambda row: not any(player in list(row) for player in player_remove), axis=1
1292
+ )
1293
+ else:
1294
+ # Create mask for lineups that contain any of the removed players
1295
+ remove_mask = parsed_frame[st.session_state['player_columns']].apply(
1296
+ lambda row: not any(player in list(row) for player in player_remove), axis=1
1297
+ )
1298
  parsed_frame = parsed_frame[remove_mask]
1299
 
1300
  if player_lock:
1301
+ if type_var == 'Showdown':
1302
+ if cpt_flex_focus == 'CPT':
1303
+ lock_mask = parsed_frame[st.session_state['player_columns'][0]].apply(
1304
+ lambda row: all(player in list(row) for player in player_lock), axis=1
1305
+ )
1306
+ elif cpt_flex_focus == 'FLEX':
1307
+ lock_mask = parsed_frame[st.session_state['player_columns'][1:]].apply(
1308
+ lambda row: all(player in list(row) for player in player_lock), axis=1
1309
+ )
1310
+ elif cpt_flex_focus == 'Overall':
1311
+ lock_mask = parsed_frame[st.session_state['player_columns']].apply(
1312
+ lambda row: all(player in list(row) for player in player_lock), axis=1
1313
+ )
1314
+ else:
1315
+ lock_mask = parsed_frame[st.session_state['player_columns']].apply(
1316
+ lambda row: all(player in list(row) for player in player_lock), axis=1
1317
+ )
1318
  parsed_frame = parsed_frame[lock_mask]
1319
 
1320
  if team_include:
1321
+ if type_var == 'Showdown':
1322
+ if cpt_flex_focus == 'CPT':
1323
+ include_mask = parsed_frame[st.session_state['player_columns'][0]].apply(
1324
+ lambda row: any(team in list(row) for team in team_include), axis=1
1325
+ )
1326
+ elif cpt_flex_focus == 'FLEX':
1327
+ include_mask = parsed_frame[st.session_state['player_columns'][1:]].apply(
1328
+ lambda row: any(team in list(row) for team in team_include), axis=1
1329
+ )
1330
+ elif cpt_flex_focus == 'Overall':
1331
+ include_mask = parsed_frame[st.session_state['player_columns']].apply(
1332
+ lambda row: any(team in list(row) for team in team_include), axis=1
1333
+ )
1334
+ else:
1335
+ # Create a copy of the frame with player names replaced by teams, excluding SP1 and SP2
1336
+ filtered_player_columns = [col for col in st.session_state['player_columns'] if col not in ['SP1', 'SP2']]
1337
+ team_frame = parsed_frame[filtered_player_columns].apply(
1338
+ lambda x: x.map(st.session_state['map_dict']['team_map'])
1339
+ )
1340
+ # Create mask for lineups that contain any of the included teams
1341
+ include_mask = team_frame.apply(
1342
+ lambda row: any(team in list(row) for team in team_include), axis=1
1343
+ )
1344
  parsed_frame = parsed_frame[include_mask]
1345
 
1346
  if team_remove:
1347
+ if type_var == 'Showdown':
1348
+ if cpt_flex_focus == 'CPT':
1349
+ remove_mask = parsed_frame[st.session_state['player_columns'][0]].apply(
1350
+ lambda row: not any(team in list(row) for team in team_remove), axis=1
1351
+ )
1352
+ elif cpt_flex_focus == 'FLEX':
1353
+ remove_mask = parsed_frame[st.session_state['player_columns'][1:]].apply(
1354
+ lambda row: not any(team in list(row) for team in team_remove), axis=1
1355
+ )
1356
+ elif cpt_flex_focus == 'Overall':
1357
+ remove_mask = parsed_frame[st.session_state['player_columns']].apply(
1358
+ lambda row: not any(team in list(row) for team in team_remove), axis=1
1359
+ )
1360
+ else:
1361
+ # Create a copy of the frame with player names replaced by teams, excluding SP1 and SP2
1362
+ filtered_player_columns = [col for col in st.session_state['player_columns'] if col not in ['SP1', 'SP2']]
1363
+ team_frame = parsed_frame[filtered_player_columns].apply(
1364
+ lambda x: x.map(st.session_state['map_dict']['team_map'])
1365
+ )
1366
+ # Create mask for lineups that don't contain any of the removed teams
1367
+ remove_mask = team_frame.apply(
1368
+ lambda row: not any(team in list(row) for team in team_remove), axis=1
1369
+ )
1370
  parsed_frame = parsed_frame[remove_mask]
1371
 
1372
  if size_include: