James McCool commited on
Commit
9e303cb
·
1 Parent(s): 201ffbb

Implement sport-specific logic in small_field_preset for MLB, enhancing lineup management by dynamically adjusting player selection based on 'Weighted Own' values. This update improves the function's ability to handle team-specific constraints and ensures more accurate lineup generation.

Browse files
Files changed (1) hide show
  1. global_func/small_field_preset.py +21 -3
global_func/small_field_preset.py CHANGED
@@ -6,11 +6,29 @@ def small_field_preset(portfolio: pd.DataFrame, lineup_target: int, exclude_cols
6
 
7
  for slack_var in range(1, 20):
8
  concat_portfolio = pd.DataFrame(columns=portfolio.columns)
 
 
 
 
 
 
 
9
 
10
- for team in portfolio['Stack'].unique():
 
 
 
 
 
 
 
 
 
 
 
11
  rows_to_drop = []
12
  working_portfolio = portfolio.copy()
13
- working_portfolio = working_portfolio[working_portfolio['Stack'] == team].sort_values(by='Own', ascending = False)
14
  working_portfolio = working_portfolio.reset_index(drop=True)
15
  curr_own_type_max = working_portfolio.loc[0, 'Weighted Own'] + (slack_var / 20 * working_portfolio.loc[0, 'Weighted Own'])
16
 
@@ -22,7 +40,7 @@ def small_field_preset(portfolio: pd.DataFrame, lineup_target: int, exclude_cols
22
 
23
  working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
24
  concat_portfolio = pd.concat([concat_portfolio, working_portfolio])
25
-
26
  if len(concat_portfolio) >= lineup_target:
27
  return concat_portfolio.sort_values(by='Own', ascending=False).head(lineup_target)
28
 
 
6
 
7
  for slack_var in range(1, 20):
8
  concat_portfolio = pd.DataFrame(columns=portfolio.columns)
9
+ if sport == 'MLB':
10
+ for team in portfolio['Stack'].unique():
11
+ rows_to_drop = []
12
+ working_portfolio = portfolio.copy()
13
+ working_portfolio = working_portfolio[working_portfolio['Stack'] == team].sort_values(by='Own', ascending = False)
14
+ working_portfolio = working_portfolio.reset_index(drop=True)
15
+ curr_own_type_max = working_portfolio.loc[0, 'Weighted Own'] + (slack_var / 20 * working_portfolio.loc[0, 'Weighted Own'])
16
 
17
+ for i in range(1, len(working_portfolio)):
18
+ if working_portfolio.loc[i, 'Weighted Own'] > curr_own_type_max:
19
+ rows_to_drop.append(i)
20
+ else:
21
+ curr_own_type_max = working_portfolio.loc[i, 'Weighted Own'] + (slack_var / 20 * working_portfolio.loc[i, 'Weighted Own'])
22
+
23
+ working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
24
+ concat_portfolio = pd.concat([concat_portfolio, working_portfolio])
25
+
26
+ if len(concat_portfolio) >= lineup_target:
27
+ return concat_portfolio.sort_values(by='Own', ascending=False).head(lineup_target)
28
+ else:
29
  rows_to_drop = []
30
  working_portfolio = portfolio.copy()
31
+ working_portfolio = working_portfolio.sort_values(by='Own', ascending = False)
32
  working_portfolio = working_portfolio.reset_index(drop=True)
33
  curr_own_type_max = working_portfolio.loc[0, 'Weighted Own'] + (slack_var / 20 * working_portfolio.loc[0, 'Weighted Own'])
34
 
 
40
 
41
  working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
42
  concat_portfolio = pd.concat([concat_portfolio, working_portfolio])
43
+
44
  if len(concat_portfolio) >= lineup_target:
45
  return concat_portfolio.sort_values(by='Own', ascending=False).head(lineup_target)
46