James McCool commited on
Commit
a20fb3f
·
1 Parent(s): 5dedddf

Refactor stacking logic in app.py to conditionally apply calculations for 'Stack' and 'Size' columns based on their existence in the DataFrame. This change improves code robustness and prevents potential errors during data processing.

Browse files
Files changed (1) hide show
  1. app.py +32 -30
app.py CHANGED
@@ -2062,21 +2062,22 @@ if selected_tab == 'Manage Portfolio':
2062
  # st.session_state['working_frame'] = predict_dupes(st.session_state['working_frame'], st.session_state['map_dict'], site_var, type_var, Contest_Size, strength_var, sport_var)
2063
  st.session_state['working_frame'] = reassess_edge(st.session_state['working_frame'], st.session_state['base_frame'], st.session_state['map_dict'], site_var, type_var, Contest_Size, strength_var, sport_var, salary_max)
2064
  team_dict = dict(zip(st.session_state['projections_df']['player_names'], st.session_state['projections_df']['team']))
2065
- st.session_state['working_frame']['Stack'] = st.session_state['working_frame'].apply(
2066
- lambda row: Counter(
2067
- team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]
2068
- if team_dict.get(player, '') != ''
2069
- ).most_common(1)[0][0] if any(team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]) else '',
2070
- axis=1
2071
- )
2072
- st.session_state['working_frame']['Size'] = st.session_state['working_frame'].apply(
2073
- lambda row: Counter(
2074
- team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]
2075
- if team_dict.get(player, '') != ''
2076
- ).most_common(1)[0][1] if any(team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]) else 0,
2077
- axis=1
2078
- )
2079
- st.session_state['export_merge'] = st.session_state['working_frame'].copy()
 
2080
  elif exp_submitted:
2081
  st.session_state['settings_base'] = False
2082
  # Prepare DataFrame for exposure_spread to avoid categorical issues
@@ -2099,21 +2100,22 @@ if selected_tab == 'Manage Portfolio':
2099
  # st.session_state['export_base'] = predict_dupes(st.session_state['export_base'], st.session_state['map_dict'], site_var, type_var, Contest_Size, strength_var, sport_var)
2100
  st.session_state['export_base'] = reassess_edge(st.session_state['export_base'], st.session_state['base_frame'], st.session_state['map_dict'], site_var, type_var, Contest_Size, strength_var, sport_var, salary_max)
2101
  team_dict = dict(zip(st.session_state['projections_df']['player_names'], st.session_state['projections_df']['team']))
2102
- st.session_state['working_frame']['Stack'] = st.session_state['working_frame'].apply(
2103
- lambda row: Counter(
2104
- team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]
2105
- if team_dict.get(player, '') != ''
2106
- ).most_common(1)[0][0] if any(team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]) else '',
2107
- axis=1
2108
- )
2109
- st.session_state['working_frame']['Size'] = st.session_state['working_frame'].apply(
2110
- lambda row: Counter(
2111
- team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]
2112
- if team_dict.get(player, '') != ''
2113
- ).most_common(1)[0][1] if any(team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]) else 0,
2114
- axis=1
2115
- )
2116
- st.session_state['export_merge'] = st.session_state['export_base'].copy()
 
2117
 
2118
  with st.container():
2119
  if 'export_base' not in st.session_state:
 
2062
  # st.session_state['working_frame'] = predict_dupes(st.session_state['working_frame'], st.session_state['map_dict'], site_var, type_var, Contest_Size, strength_var, sport_var)
2063
  st.session_state['working_frame'] = reassess_edge(st.session_state['working_frame'], st.session_state['base_frame'], st.session_state['map_dict'], site_var, type_var, Contest_Size, strength_var, sport_var, salary_max)
2064
  team_dict = dict(zip(st.session_state['projections_df']['player_names'], st.session_state['projections_df']['team']))
2065
+ if 'Stack' in st.session_state['working_frame'].columns:
2066
+ st.session_state['working_frame']['Stack'] = st.session_state['working_frame'].apply(
2067
+ lambda row: Counter(
2068
+ team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]
2069
+ if team_dict.get(player, '') != ''
2070
+ ).most_common(1)[0][0] if any(team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]) else '',
2071
+ axis=1
2072
+ )
2073
+ st.session_state['working_frame']['Size'] = st.session_state['working_frame'].apply(
2074
+ lambda row: Counter(
2075
+ team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]
2076
+ if team_dict.get(player, '') != ''
2077
+ ).most_common(1)[0][1] if any(team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]) else 0,
2078
+ axis=1
2079
+ )
2080
+ st.session_state['export_merge'] = st.session_state['working_frame'].copy()
2081
  elif exp_submitted:
2082
  st.session_state['settings_base'] = False
2083
  # Prepare DataFrame for exposure_spread to avoid categorical issues
 
2100
  # st.session_state['export_base'] = predict_dupes(st.session_state['export_base'], st.session_state['map_dict'], site_var, type_var, Contest_Size, strength_var, sport_var)
2101
  st.session_state['export_base'] = reassess_edge(st.session_state['export_base'], st.session_state['base_frame'], st.session_state['map_dict'], site_var, type_var, Contest_Size, strength_var, sport_var, salary_max)
2102
  team_dict = dict(zip(st.session_state['projections_df']['player_names'], st.session_state['projections_df']['team']))
2103
+ if 'Stack' in st.session_state['export_base'].columns:
2104
+ st.session_state['export_base']['Stack'] = st.session_state['export_base'].apply(
2105
+ lambda row: Counter(
2106
+ team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]
2107
+ if team_dict.get(player, '') != ''
2108
+ ).most_common(1)[0][0] if any(team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]) else '',
2109
+ axis=1
2110
+ )
2111
+ st.session_state['export_base']['Size'] = st.session_state['export_base'].apply(
2112
+ lambda row: Counter(
2113
+ team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]
2114
+ if team_dict.get(player, '') != ''
2115
+ ).most_common(1)[0][1] if any(team_dict.get(player, '') for player in row[stack_column_dict[site_var][type_var][sport_var]]) else 0,
2116
+ axis=1
2117
+ )
2118
+ st.session_state['export_merge'] = st.session_state['export_base'].copy()
2119
 
2120
  with st.container():
2121
  if 'export_base' not in st.session_state: