James McCool commited on
Commit
cc619fc
·
1 Parent(s): 8587197

adding ability to recalculate stacks and sizes

Browse files
Files changed (1) hide show
  1. app.py +23 -1
app.py CHANGED
@@ -1109,6 +1109,24 @@ def parse_portfolio_on_mapped(portfolio, map_dict, map_key, filter_keys_pos, fil
1109
 
1110
  return portfolio[mask]
1111
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1112
  with st.container():
1113
 
1114
  col1, col2, col3, col4 = st.columns([1, 4, 4, 4])
@@ -1929,7 +1947,7 @@ if selected_tab == 'Manage Portfolio':
1929
  st.session_state['base_frame_names'] = {}
1930
  if 'origin_portfolio' in st.session_state and 'projections_df' in st.session_state:
1931
  with st.container():
1932
- reset_port_col, recalc_div_col, set_base_col, blank_reset_col, contest_size_col = st.columns([.15, .15, .15, .35, .30])
1933
  with reset_port_col:
1934
  with st.popover("Reset Portfolio"):
1935
  st.markdown("choose a base to reset to:")
@@ -1940,6 +1958,10 @@ if selected_tab == 'Manage Portfolio':
1940
  st.rerun()
1941
  else:
1942
  st.info("No saved base frames available")
 
 
 
 
1943
  with recalc_div_col:
1944
  if st.button("Recalculate Diversity"):
1945
  st.session_state['working_frame']['Diversity'] = recalc_diversity(st.session_state['display_frame'], st.session_state['player_columns'])
 
1109
 
1110
  return portfolio[mask]
1111
 
1112
+ def recalc_stacks_sizes(df, player_columns, map_dict):
1113
+ team_map = map_dict['team_map'] # Use this directly (player_name -> team)
1114
+ df['Stack'] = df.apply(
1115
+ lambda row: Counter(
1116
+ team_map.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]
1117
+ if team_map.get(player, '') != ''
1118
+ ).most_common(1)[0][0] if any(team_map.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]) else '',
1119
+ axis=1
1120
+ )
1121
+ df['Size'] = df.apply(
1122
+ lambda row: Counter(
1123
+ team_map.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]
1124
+ if team_map.get(player, '') != ''
1125
+ ).most_common(1)[0][1] if any(team_map.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]) else 0,
1126
+ axis=1
1127
+ )
1128
+ return df
1129
+
1130
  with st.container():
1131
 
1132
  col1, col2, col3, col4 = st.columns([1, 4, 4, 4])
 
1947
  st.session_state['base_frame_names'] = {}
1948
  if 'origin_portfolio' in st.session_state and 'projections_df' in st.session_state:
1949
  with st.container():
1950
+ reset_port_col, recalc_stacks_col, recalc_div_col, set_base_col, blank_reset_col, contest_size_col = st.columns([.15, .15, .15, .15, .35, .30])
1951
  with reset_port_col:
1952
  with st.popover("Reset Portfolio"):
1953
  st.markdown("choose a base to reset to:")
 
1958
  st.rerun()
1959
  else:
1960
  st.info("No saved base frames available")
1961
+ with recalc_stacks_col:
1962
+ if st.button("Recalculate Stacks and Sizes"):
1963
+ st.session_state['working_frame'] = recalc_stacks_sizes(st.session_state['working_frame'], st.session_state['player_columns'], st.session_state['map_dict'])
1964
+ st.rerun()
1965
  with recalc_div_col:
1966
  if st.button("Recalculate Diversity"):
1967
  st.session_state['working_frame']['Diversity'] = recalc_diversity(st.session_state['display_frame'], st.session_state['player_columns'])