James McCool commited on
Commit
41bf9e3
·
1 Parent(s): 38b9c72

Refactor player data handling in Streamlit app; removed 'version' column from display and improved QB positioning in combinations for stack finder functionality.

Browse files
Files changed (1) hide show
  1. src/streamlit_app.py +16 -9
src/streamlit_app.py CHANGED
@@ -87,14 +87,14 @@ def init_baselines():
87
  cursor = collection.find()
88
 
89
  raw_display = pd.DataFrame(list(cursor))
90
- raw_display = raw_display[['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX', 'slate', 'version']]
91
  dk_stacks_raw = raw_display.copy()
92
 
93
  collection = db["FD_DFS_Stacks"]
94
  cursor = collection.find()
95
 
96
  raw_display = pd.DataFrame(list(cursor))
97
- raw_display = raw_display[['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX', 'slate', 'version']]
98
  fd_stacks_raw = raw_display.copy()
99
 
100
  return player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw
@@ -224,6 +224,7 @@ if selected_tab == 'Stack Finder':
224
 
225
  # Create a position dictionary mapping players to their eligible positions
226
  pos_dict = dict(zip(raw_baselines.Player, raw_baselines.Position))
 
227
 
228
  def is_valid_combination(combo):
229
  # Count positions in this combination
@@ -252,17 +253,22 @@ if selected_tab == 'Stack Finder':
252
  working_baselines = working_baselines[working_baselines['Position'] != 'DST']
253
  working_baselines = working_baselines[working_baselines['Position'] != 'K']
254
  qb_var = qb_dict[cur_team]
255
- order_list = working_baselines['Player'].unique()
 
 
 
 
256
 
257
  comb = combinations(order_list, stack_size)
258
 
259
  for i in list(comb):
260
- if qb_var in i:
261
- comb_list.append(i)
262
-
263
- for i in list(comb):
264
- if is_valid_combination(i):
265
- comb_list.append(i)
 
266
 
267
  comb_DF = pd.DataFrame(comb_list)
268
 
@@ -416,6 +422,7 @@ if selected_tab == 'Stack Finder':
416
  cut_var += 1
417
  except:
418
  cut_var += 1
 
419
  st.session_state['display_frame'] = comb_DF
420
  if 'display_frame' in st.session_state:
421
  st.dataframe(st.session_state['display_frame'].style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), hide_index=True, use_container_width = True)
 
87
  cursor = collection.find()
88
 
89
  raw_display = pd.DataFrame(list(cursor))
90
+ raw_display = raw_display[['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX', 'slate']]
91
  dk_stacks_raw = raw_display.copy()
92
 
93
  collection = db["FD_DFS_Stacks"]
94
  cursor = collection.find()
95
 
96
  raw_display = pd.DataFrame(list(cursor))
97
+ raw_display = raw_display[['Team', 'QB', 'WR1_TE', 'WR2_TE', 'Total', 'Salary', 'Floor', 'Median', 'Ceiling', 'Top_finish', 'Top_5_finish', 'Top_10_finish', '60+%', '2x%', '3x%', '4x%', 'Own', 'LevX', 'slate']]
98
  fd_stacks_raw = raw_display.copy()
99
 
100
  return player_stats, dk_stacks_raw, fd_stacks_raw, dk_roo_raw, fd_roo_raw
 
224
 
225
  # Create a position dictionary mapping players to their eligible positions
226
  pos_dict = dict(zip(raw_baselines.Player, raw_baselines.Position))
227
+ pos_reverse_dict = dict(zip(raw_baselines.Position, raw_baselines.Player))
228
 
229
  def is_valid_combination(combo):
230
  # Count positions in this combination
 
253
  working_baselines = working_baselines[working_baselines['Position'] != 'DST']
254
  working_baselines = working_baselines[working_baselines['Position'] != 'K']
255
  qb_var = qb_dict[cur_team]
256
+
257
+ # Create order_list with QBs first to ensure they appear in first column
258
+ qb_players = working_baselines[working_baselines['Position'] == 'QB']['Player'].unique()
259
+ other_players = working_baselines[working_baselines['Position'] != 'QB']['Player'].unique()
260
+ order_list = list(qb_players) + list(other_players)
261
 
262
  comb = combinations(order_list, stack_size)
263
 
264
  for i in list(comb):
265
+ if qb_var in i and is_valid_combination(i):
266
+ # Ensure QB is in first position
267
+ combo_list = list(i)
268
+ if qb_var in combo_list:
269
+ qb_index = combo_list.index(qb_var)
270
+ combo_list[0], combo_list[qb_index] = combo_list[qb_index], combo_list[0]
271
+ comb_list.append(tuple(combo_list))
272
 
273
  comb_DF = pd.DataFrame(comb_list)
274
 
 
422
  cut_var += 1
423
  except:
424
  cut_var += 1
425
+
426
  st.session_state['display_frame'] = comb_DF
427
  if 'display_frame' in st.session_state:
428
  st.dataframe(st.session_state['display_frame'].style.background_gradient(axis=0).background_gradient(cmap='RdYlGn').format(precision=2), hide_index=True, use_container_width = True)