James McCool commited on
Commit
471e1a6
·
1 Parent(s): 3cc15e1

Refactor large_field_preset function to improve team-based filtering by introducing median and finish percentile rankings for enhanced sorting accuracy. Clean up temporary columns after processing to maintain DataFrame integrity.

Browse files
Files changed (1) hide show
  1. global_func/large_field_preset.py +6 -1
global_func/large_field_preset.py CHANGED
@@ -7,7 +7,11 @@ def large_field_preset(portfolio: pd.DataFrame, lineup_target: int):
7
 
8
  for team in portfolio['Stack'].unique():
9
  rows_to_drop = []
10
- working_portfolio = portfolio[portfolio['Stack'] == team].sort_values(by='Finish_percentile', ascending = True)
 
 
 
 
11
  working_portfolio = working_portfolio[working_portfolio['Lineup Edge'] > 0]
12
  working_portfolio = working_portfolio.reset_index(drop=True)
13
  curr_own_type_max = working_portfolio.loc[0, 'Own'] + (slack_var / 20 * working_portfolio.loc[0, 'Own'])
@@ -19,6 +23,7 @@ def large_field_preset(portfolio: pd.DataFrame, lineup_target: int):
19
  curr_own_type_max = working_portfolio.loc[i, 'Own'] + (slack_var / 20 * working_portfolio.loc[i, 'Own'])
20
 
21
  working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
 
22
  concat_portfolio = pd.concat([concat_portfolio, working_portfolio])
23
  if len(concat_portfolio) >= lineup_target:
24
  return concat_portfolio.sort_values(by='Finish_percentile', ascending=True).head(lineup_target)
 
7
 
8
  for team in portfolio['Stack'].unique():
9
  rows_to_drop = []
10
+ working_portfolio = portfolio.copy()
11
+ working_portfolio['median_rank'] = working_portfolio['median_rank'].rank(method='first')
12
+ working_portfolio['finish_percentile_rank'] = working_portfolio['Finish_percentile'].rank(method='first')
13
+ working_portfolio['rank_agg'] = (working_portfolio['median_rank'] + working_portfolio['finish_percentile_rank']) / 2
14
+ working_portfolio = working_portfolio[working_portfolio['Stack'] == team].sort_values(by='rank_agg', ascending = True)
15
  working_portfolio = working_portfolio[working_portfolio['Lineup Edge'] > 0]
16
  working_portfolio = working_portfolio.reset_index(drop=True)
17
  curr_own_type_max = working_portfolio.loc[0, 'Own'] + (slack_var / 20 * working_portfolio.loc[0, 'Own'])
 
23
  curr_own_type_max = working_portfolio.loc[i, 'Own'] + (slack_var / 20 * working_portfolio.loc[i, 'Own'])
24
 
25
  working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
26
+ working_portfolio = working_portfolio.drop(columns=['median_rank', 'finish_percentile_rank', 'rank_agg'])
27
  concat_portfolio = pd.concat([concat_portfolio, working_portfolio])
28
  if len(concat_portfolio) >= lineup_target:
29
  return concat_portfolio.sort_values(by='Finish_percentile', ascending=True).head(lineup_target)