James McCool commited on
Commit
911d70e
·
1 Parent(s): 546a43f

Add size selection functionality in app.py: introduce options to include player sizes in lineups, enhancing user control over player configurations and improving data representation.

Browse files
Files changed (1) hide show
  1. app.py +13 -0
app.py CHANGED
@@ -272,7 +272,15 @@ with tab1:
272
  ).most_common(1)[0][0] if any(team_dict.get(player, '') for player in row[2:]) else '',
273
  axis=1
274
  )
 
 
 
 
 
 
 
275
  stack_dict = dict(zip(st.session_state['portfolio'].index, st.session_state['portfolio']['Stack']))
 
276
 
277
  working_frame = st.session_state['portfolio'].copy()
278
  try:
@@ -909,6 +917,7 @@ with tab2:
909
  st.session_state['working_frame']['Own'] = st.session_state['working_frame'].apply(lambda row: sum(st.session_state['map_dict']['own_map'].get(player, 0) for player in row), axis=1)
910
  if stack_dict is not None:
911
  st.session_state['working_frame']['Stack'] = st.session_state['working_frame'].index.map(stack_dict)
 
912
  elif type_var == 'Showdown':
913
  # Calculate salary (CPT uses cpt_salary_map, others use salary_map)
914
  st.session_state['working_frame']['salary'] = st.session_state['working_frame'].apply(
@@ -1004,6 +1013,7 @@ with tab2:
1004
  player_remove = st.multiselect("Remove players?", options=sorted(list(player_names)), default=[])
1005
  team_include = st.multiselect("Include teams?", options=sorted(list(set(st.session_state['projections_df']['team'].unique()))), default=[])
1006
  team_remove = st.multiselect("Remove teams?", options=sorted(list(set(st.session_state['projections_df']['team'].unique()))), default=[])
 
1007
 
1008
  submitted = st.form_submit_button("Submit")
1009
  if submitted:
@@ -1048,6 +1058,9 @@ with tab2:
1048
  lambda row: not any(team in list(row) for team in team_remove), axis=1
1049
  )
1050
  parsed_frame = parsed_frame[remove_mask]
 
 
 
1051
 
1052
  st.session_state['working_frame'] = parsed_frame.sort_values(by='median', ascending=False)
1053
  st.session_state['export_merge'] = st.session_state['working_frame'].copy()
 
272
  ).most_common(1)[0][0] if any(team_dict.get(player, '') for player in row[2:]) else '',
273
  axis=1
274
  )
275
+ st.session_state['portfolio']['Size'] = st.session_state['portfolio'].apply(
276
+ lambda row: Counter(
277
+ team_dict.get(player, '') for player in row[2:]
278
+ if team_dict.get(player, '') != ''
279
+ ).most_common(1)[0][1] if any(team_dict.get(player, '') for player in row[2:]) else 0,
280
+ axis=1
281
+ )
282
  stack_dict = dict(zip(st.session_state['portfolio'].index, st.session_state['portfolio']['Stack']))
283
+ size_dict = dict(zip(st.session_state['portfolio'].index, st.session_state['portfolio']['Size']))
284
 
285
  working_frame = st.session_state['portfolio'].copy()
286
  try:
 
917
  st.session_state['working_frame']['Own'] = st.session_state['working_frame'].apply(lambda row: sum(st.session_state['map_dict']['own_map'].get(player, 0) for player in row), axis=1)
918
  if stack_dict is not None:
919
  st.session_state['working_frame']['Stack'] = st.session_state['working_frame'].index.map(stack_dict)
920
+ st.session_state['working_frame']['Size'] = st.session_state['working_frame'].index.map(size_dict)
921
  elif type_var == 'Showdown':
922
  # Calculate salary (CPT uses cpt_salary_map, others use salary_map)
923
  st.session_state['working_frame']['salary'] = st.session_state['working_frame'].apply(
 
1013
  player_remove = st.multiselect("Remove players?", options=sorted(list(player_names)), default=[])
1014
  team_include = st.multiselect("Include teams?", options=sorted(list(set(st.session_state['projections_df']['team'].unique()))), default=[])
1015
  team_remove = st.multiselect("Remove teams?", options=sorted(list(set(st.session_state['projections_df']['team'].unique()))), default=[])
1016
+ size_include = st.multiselect("Include sizes?", options=sorted(list(set(st.session_state['working_frame']['Size'].unique()))), default=[])
1017
 
1018
  submitted = st.form_submit_button("Submit")
1019
  if submitted:
 
1058
  lambda row: not any(team in list(row) for team in team_remove), axis=1
1059
  )
1060
  parsed_frame = parsed_frame[remove_mask]
1061
+
1062
+ if size_include:
1063
+ parsed_frame = parsed_frame[parsed_frame['Size'].isin(size_include)]
1064
 
1065
  st.session_state['working_frame'] = parsed_frame.sort_values(by='median', ascending=False)
1066
  st.session_state['export_merge'] = st.session_state['working_frame'].copy()