James McCool commited on
Commit
0c5892a
·
1 Parent(s): 1dd4cb9

Add position filtering options to portfolio management, allowing users to filter by position and team with adjustable thresholds.

Browse files
Files changed (1) hide show
  1. app.py +36 -0
app.py CHANGED
@@ -32,6 +32,9 @@ from global_func.recalc_diversity import recalc_diversity
32
  from database_queries import *
33
  from database import *
34
 
 
 
 
35
  showdown_selections = ['Showdown #1', 'Showdown #2', 'Showdown #3', 'Showdown #4', 'Showdown #5', 'Showdown #6', 'Showdown #7', 'Showdown #8', 'Showdown #9', 'Showdown #10', 'Showdown #11', 'Showdown #12', 'Showdown #13', 'Showdown #14', 'Showdown #15']
36
  dk_db_nfl_showdown_selections = ['DK_NFL_SD_seed_frame_Showdown #1', 'DK_NFL_SD_seed_frame_Showdown #2', 'DK_NFL_SD_seed_frame_Showdown #3', 'DK_NFL_SD_seed_frame_Showdown #4', 'DK_NFL_SD_seed_frame_Showdown #5', 'DK_NFL_SD_seed_frame_Showdown #6',
37
  'DK_NFL_SD_seed_frame_Showdown #7', 'DK_NFL_SD_seed_frame_Showdown #8', 'DK_NFL_SD_seed_frame_Showdown #9', 'DK_NFL_SD_seed_frame_Showdown #10', 'DK_NFL_SD_seed_frame_Showdown #11', 'DK_NFL_SD_seed_frame_Showdown #12', 'DK_NFL_SD_seed_frame_Showdown #13',
@@ -1745,6 +1748,8 @@ if selected_tab == 'Manage Portfolio':
1745
  'Finish_percentile': st.session_state['working_frame']['Finish_percentile'].max(),
1746
  'Diversity': st.session_state['working_frame']['Diversity'].max()
1747
  }
 
 
1748
 
1749
  with st.sidebar:
1750
  if 'trimming_dict_maxes' not in st.session_state:
@@ -2125,6 +2130,37 @@ if selected_tab == 'Manage Portfolio':
2125
  st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
2126
  st.session_state['export_merge'] = st.session_state['export_base'].copy()
2127
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2128
  with st.expander('Trimming Options'):
2129
  with st.form(key='trim_form'):
2130
  st.write("Sorting and trimming variables:")
 
32
  from database_queries import *
33
  from database import *
34
 
35
+ pos_parse_options = ['Projection', 'Ownership', 'Salary', 'Position', 'Team']
36
+ pos_parse_translate = ['proj_map', 'own_map', 'salary_map', 'pos_map', 'team_map']
37
+
38
  showdown_selections = ['Showdown #1', 'Showdown #2', 'Showdown #3', 'Showdown #4', 'Showdown #5', 'Showdown #6', 'Showdown #7', 'Showdown #8', 'Showdown #9', 'Showdown #10', 'Showdown #11', 'Showdown #12', 'Showdown #13', 'Showdown #14', 'Showdown #15']
39
  dk_db_nfl_showdown_selections = ['DK_NFL_SD_seed_frame_Showdown #1', 'DK_NFL_SD_seed_frame_Showdown #2', 'DK_NFL_SD_seed_frame_Showdown #3', 'DK_NFL_SD_seed_frame_Showdown #4', 'DK_NFL_SD_seed_frame_Showdown #5', 'DK_NFL_SD_seed_frame_Showdown #6',
40
  'DK_NFL_SD_seed_frame_Showdown #7', 'DK_NFL_SD_seed_frame_Showdown #8', 'DK_NFL_SD_seed_frame_Showdown #9', 'DK_NFL_SD_seed_frame_Showdown #10', 'DK_NFL_SD_seed_frame_Showdown #11', 'DK_NFL_SD_seed_frame_Showdown #12', 'DK_NFL_SD_seed_frame_Showdown #13',
 
1748
  'Finish_percentile': st.session_state['working_frame']['Finish_percentile'].max(),
1749
  'Diversity': st.session_state['working_frame']['Diversity'].max()
1750
  }
1751
+
1752
+ position_choices = [col for col in st.session_state['working_frame'].columns if col not in excluded_cols]
1753
 
1754
  with st.sidebar:
1755
  if 'trimming_dict_maxes' not in st.session_state:
 
2130
  st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False).reset_index(drop=True)
2131
  st.session_state['export_merge'] = st.session_state['export_base'].copy()
2132
 
2133
+ with st.expander('Position Filtering'):
2134
+ with st.form(key='position_filtering_form'):
2135
+ position_choice = st.multiselect("Position(s) to filter", options=position_choices, default=[])
2136
+ position_filter = st.selectbox("Filter on:", options=pos_parse_options)
2137
+ if position_filter not in ['Position', 'Team']:
2138
+ position_low_threshold = st.number_input("Low Threshold", value=0.0, min_value=0.0, step=1.0)
2139
+ position_high_threshold = st.number_input("High Threshold", value=150.0, min_value=0.0, step=1.0)
2140
+ filter_keys = None
2141
+ else:
2142
+ filter_keys_choice = st.selectbox("Filter choice:", options=['Position', 'Team'])
2143
+ if filter_keys_choice == 'Position':
2144
+ filter_keys = st.multiselect("Position(s) to keep", options=position_choices, default=[])
2145
+ else:
2146
+ filter_keys = st.multiselect("Position(s) to keep", options=st.session_state['map_dict']['team_map'].keys(), default=[])
2147
+ position_low_threshold = None
2148
+ position_high_threshold = None
2149
+ submitted_col, export_col = st.columns(2)
2150
+ with submitted_col:
2151
+ reg_submitted = st.form_submit_button("Portfolio")
2152
+ with export_col:
2153
+ exp_submitted = st.form_submit_button("Export")
2154
+ if reg_submitted:
2155
+ parsed_frame = st.session_state['working_frame'].copy()
2156
+ parsed_frame = parse_portfolio_on_mapped(parsed_frame, st.session_state['map_dict'], pos_parse_translate[pos_parse_options.index(position_filter)], filter_keys, position_low_threshold, position_high_threshold, position_choice)
2157
+ st.session_state['working_frame'] = parsed_frame.sort_values(by='median', ascending=False)
2158
+ st.session_state['export_merge'] = st.session_state['working_frame'].copy()
2159
+ elif exp_submitted:
2160
+ parsed_frame = st.session_state['export_base'].copy()
2161
+ parsed_frame = parse_portfolio_on_mapped(parsed_frame, st.session_state['map_dict'], pos_parse_translate[pos_parse_options.index(position_filter)], filter_keys, position_low_threshold, position_high_threshold, position_choice)
2162
+ st.session_state['export_base'] = parsed_frame.sort_values(by='median', ascending=False)
2163
+ st.session_state['export_merge'] = st.session_state['export_base'].copy()
2164
  with st.expander('Trimming Options'):
2165
  with st.form(key='trim_form'):
2166
  st.write("Sorting and trimming variables:")