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 small_field_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='Own', ascending = False) | |
working_portfolio = working_portfolio.reset_index(drop=True) | |
curr_own_type_max = working_portfolio.loc[0, 'Weighted Own'] + (slack_var / 20 * working_portfolio.loc[0, 'Weighted Own']) | |
for i in range(1, len(working_portfolio)): | |
if working_portfolio.loc[i, 'Weighted Own'] > curr_own_type_max: | |
rows_to_drop.append(i) | |
else: | |
curr_own_type_max = working_portfolio.loc[i, 'Weighted Own'] + (slack_var / 20 * working_portfolio.loc[i, 'Weighted Own']) | |
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='Own', ascending=False).head(lineup_target) | |
else: | |
rows_to_drop = [] | |
working_portfolio = portfolio.copy() | |
working_portfolio = working_portfolio.sort_values(by='Own', ascending = False) | |
working_portfolio = working_portfolio.reset_index(drop=True) | |
curr_own_type_max = working_portfolio.loc[0, 'Weighted Own'] + (slack_var / 20 * working_portfolio.loc[0, 'Weighted Own']) | |
for i in range(1, len(working_portfolio)): | |
if working_portfolio.loc[i, 'Weighted Own'] > curr_own_type_max: | |
rows_to_drop.append(i) | |
else: | |
curr_own_type_max = working_portfolio.loc[i, 'Weighted Own'] + (slack_var / 20 * working_portfolio.loc[i, 'Weighted Own']) | |
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='Own', ascending=False).head(lineup_target) | |
return concat_portfolio.sort_values(by='Own', ascending=False) | |