James McCool
Add support for LOL in app.py and related functions, updating sport selection and eligibility checks across multiple modules to include League of Legends, enhancing overall functionality and user experience.
05f2b9c
import pandas as pd | |
def volatility_preset(portfolio: pd.DataFrame, lineup_target: int, exclude_cols: list, sport: str): | |
excluded_cols = ['salary', 'median', 'Own', 'Finish_percentile', 'Dupes', 'Stack', 'Size', 'Win%', 'Lineup Edge', 'Weighted Own', 'Geomean', 'Diversity'] | |
player_columns = [col for col in portfolio.columns if col not in excluded_cols] | |
for slack_var in range(1, 20): | |
concat_portfolio = pd.DataFrame(columns=portfolio.columns) | |
if sport == 'MLB' or sport == 'LOL' or sport == 'NHL': | |
for team in portfolio['Stack'].unique(): | |
rows_to_drop = [] | |
working_portfolio = portfolio.copy() | |
working_portfolio = working_portfolio[working_portfolio['Stack'] == team].sort_values(by='Lineup Edge', ascending = False) | |
working_portfolio = working_portfolio.reset_index(drop=True) | |
curr_own_type_max = working_portfolio.loc[0, 'Diversity'] + (slack_var / 20 * working_portfolio.loc[0, 'Diversity']) | |
for i in range(1, len(working_portfolio)): | |
if working_portfolio.loc[i, 'Diversity'] < curr_own_type_max: | |
rows_to_drop.append(i) | |
else: | |
curr_own_type_max = working_portfolio.loc[i, 'Diversity'] + (slack_var / 20 * working_portfolio.loc[i, 'Diversity']) | |
working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True) | |
concat_portfolio = pd.concat([concat_portfolio, working_portfolio]) | |
if len(concat_portfolio) >= lineup_target: | |
return concat_portfolio.sort_values(by='Lineup Edge', ascending=False).head(lineup_target) | |
else: | |
rows_to_drop = [] | |
working_portfolio = portfolio.copy() | |
working_portfolio = working_portfolio.sort_values(by='Lineup Edge', ascending = False) | |
working_portfolio = working_portfolio.reset_index(drop=True) | |
curr_own_type_max = working_portfolio.loc[0, 'Diversity'] + (slack_var / 20 * working_portfolio.loc[0, 'Diversity']) | |
for i in range(1, len(working_portfolio)): | |
if working_portfolio.loc[i, 'Diversity'] < curr_own_type_max: | |
rows_to_drop.append(i) | |
else: | |
curr_own_type_max = working_portfolio.loc[i, 'Diversity'] + (slack_var / 20 * working_portfolio.loc[i, 'Diversity']) | |
working_portfolio = working_portfolio.drop(rows_to_drop).reset_index(drop=True) | |
concat_portfolio = pd.concat([concat_portfolio, working_portfolio]) | |
if len(concat_portfolio) >= lineup_target: | |
return concat_portfolio.sort_values(by='Lineup Edge', ascending=False).head(lineup_target) | |
return concat_portfolio.sort_values(by='Lineup Edge', ascending=False) | |