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- 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
|
9 |
-
finish_threshold = (finishing_range / 100)
|
10 |
-
lower_threshold = ((finishing_range - 1) / 100)
|
11 |
rows_to_drop = []
|
12 |
working_portfolio = portfolio.copy()
|
13 |
-
|
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 |
-
|
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 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
|
36 |
if len(concat_portfolio) >= lineup_target:
|
37 |
-
return concat_portfolio.sort_values(by='
|
38 |
|
39 |
-
return concat_portfolio.sort_values(by='
|
|
|
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)
|