James McCool commited on
Commit
4c00913
·
1 Parent(s): 29a9f26

Refactor portfolio distribution logic in distribute_preset.py to group by 'Stack' and update sorting criteria to 'median'. This change improves the accuracy of portfolio filtering by ensuring the correct metrics are used for both selection and final output.

Browse files
Files changed (1) hide show
  1. global_func/distribute_preset.py +13 -25
global_func/distribute_preset.py CHANGED
@@ -5,35 +5,23 @@ def distribute_preset(portfolio: pd.DataFrame, lineup_target: int, exclude_cols:
5
  for slack_var in range(1, 20):
6
  concat_portfolio = pd.DataFrame(columns=portfolio.columns)
7
 
8
- for finishing_range in range(1, 20):
9
- finish_threshold = (finishing_range / 100)
10
- lower_threshold = ((finishing_range - 1) / 100)
11
  rows_to_drop = []
12
  working_portfolio = portfolio.copy()
13
- if finishing_range == 1:
14
- working_portfolio = working_portfolio[working_portfolio['Finish_percentile'] <= finish_threshold]
15
- elif finishing_range == 20:
16
- working_portfolio = working_portfolio[working_portfolio['Finish_percentile'] >= lower_threshold]
17
- else:
18
- working_portfolio = working_portfolio[working_portfolio['Finish_percentile'] <= finish_threshold]
19
- working_portfolio = working_portfolio[working_portfolio['Finish_percentile'] >= lower_threshold]
20
- working_portfolio = working_portfolio.sort_values(by='Finish_percentile', ascending = False)
21
  working_portfolio = working_portfolio.reset_index(drop=True)
22
- if len(working_portfolio) == 0:
23
- continue
24
- elif len(working_portfolio) >= 1:
25
- curr_own_type_max = working_portfolio.loc[0, 'Similarity Score'] + (slack_var / 20 * working_portfolio.loc[0, 'Similarity Score'])
26
 
27
- for i in range(1, len(working_portfolio)):
28
- if working_portfolio.loc[i, 'Similarity Score'] < curr_own_type_max:
29
- rows_to_drop.append(i)
30
- else:
31
- curr_own_type_max = working_portfolio.loc[i, 'Similarity Score'] + (slack_var / 20 * working_portfolio.loc[i, 'Similarity Score'])
32
-
33
- working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
34
- concat_portfolio = pd.concat([concat_portfolio, working_portfolio.head(10)])
35
 
36
  if len(concat_portfolio) >= lineup_target:
37
- return concat_portfolio.sort_values(by='Finish_percentile', ascending=True).head(lineup_target)
38
 
39
- return concat_portfolio.sort_values(by='Finish_percentile', ascending=True)
 
5
  for slack_var in range(1, 20):
6
  concat_portfolio = pd.DataFrame(columns=portfolio.columns)
7
 
8
+ for team in portfolio['Stack'].unique():
 
 
9
  rows_to_drop = []
10
  working_portfolio = portfolio.copy()
11
+ working_portfolio = working_portfolio[working_portfolio['Stack'] == team].sort_values(by='Similarity Score', ascending = True)
 
 
 
 
 
 
 
12
  working_portfolio = working_portfolio.reset_index(drop=True)
13
+ curr_own_type_max = working_portfolio.loc[0, 'Similarity Score'] + (slack_var / 20 * working_portfolio.loc[0, 'Similarity Score'])
 
 
 
14
 
15
+ for i in range(1, len(working_portfolio)):
16
+ if working_portfolio.loc[i, 'Similarity Score'] > curr_own_type_max:
17
+ rows_to_drop.append(i)
18
+ else:
19
+ curr_own_type_max = working_portfolio.loc[i, 'Similarity Score'] + (slack_var / 20 * working_portfolio.loc[i, 'Similarity Score'])
20
+
21
+ working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True)
22
+ concat_portfolio = pd.concat([concat_portfolio, working_portfolio])
23
 
24
  if len(concat_portfolio) >= lineup_target:
25
+ return concat_portfolio.sort_values(by='median', ascending=True).head(lineup_target)
26
 
27
+ return concat_portfolio.sort_values(by='median', ascending=True)