Spaces:
Sleeping
Sleeping
James McCool
Update position filtering in create_position_export_dict to include 'C/1B' and modify sport headers for WNBA and MLB across load functions, enhancing player data handling for CSV exports.
bfa4569
| import streamlit as st | |
| import numpy as np | |
| import pandas as pd | |
| import time | |
| from rapidfuzz import process | |
| import re | |
| sport_headers = { | |
| 'Draftkings': { | |
| 'Classic' : { | |
| 'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'F1' : ['CPT', 'DRIVER1', 'DRIVER2', 'DRIVER3', 'DRIVER4', 'CONST'], | |
| 'SOC' : ['F1', 'F2', 'M1', 'M2', 'D1', 'D2', 'GK', 'UTIL'], | |
| 'TENNIS' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'WNBA' : ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'], | |
| 'NASCAR' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'MLB' : ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3'], | |
| 'NFL' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'], | |
| 'CFL' : ['QB', 'RB', 'WR1', 'WR2', 'FLEX1', 'FLEX2', 'DST'], | |
| 'LOL' : ['CPT', 'TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'], | |
| 'CSGO' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'COD' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'TEAM'], | |
| 'NHL' : ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'UTIL', 'G'], | |
| 'NCAAF' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'], | |
| }, | |
| 'Showdown' : { | |
| 'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'F1' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'SOC' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'TENNIS' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'WNBA' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'NASCAR' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'MLB' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'NFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'CFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'LOL' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], | |
| 'CSGO' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], | |
| 'COD' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], | |
| 'NHL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'NCAAF' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| }, | |
| }, | |
| 'Fanduel': { | |
| 'Classic' : { | |
| 'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'F1' : ['CPT', 'DRIVER1', 'DRIVER2', 'DRIVER3', 'DRIVER4', 'CONST'], | |
| 'SOC' : ['F1', 'F2', 'M1', 'M2', 'D1', 'D2', 'GK', 'UTIL'], | |
| 'TENNIS' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'WNBA' : ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4'], | |
| 'NASCAR' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'MLB' : ['P', 'C/1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3', 'UTIL'], | |
| 'NFL' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'], | |
| 'CFL' : ['QB', 'RB', 'WR1', 'WR2', 'FLEX1', 'FLEX2', 'DST'], | |
| 'LOL' : ['CPT', 'TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'], | |
| 'CSGO' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'COD' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'TEAM'], | |
| 'NHL' : ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'UTIL', 'G'], | |
| 'NCAAF' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'], | |
| }, | |
| 'Showdown' : { | |
| 'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'], | |
| 'F1' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'SOC' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'TENNIS' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'WNBA' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'NASCAR' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'MLB' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'NFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'CFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'LOL' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], | |
| 'CSGO' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], | |
| 'COD' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'], | |
| 'NHL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| 'NCAAF' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'], | |
| }, | |
| }, | |
| } | |
| def load_ss_file(lineups, csv_file, site_var, type_var, sport_var): | |
| df = csv_file.copy() | |
| try: | |
| name_dict = dict(zip(df['ID'], df['Name'])) | |
| except: | |
| name_dict = dict(zip(df['Id'], df['Nickname'])) | |
| # Now load and process the lineups file | |
| try: | |
| clean_name = re.sub(r' \(\d+\)', '', lineups.name) | |
| print(clean_name) | |
| print(lineups.name) | |
| if clean_name.endswith('.csv'): | |
| lineups_df = pd.read_csv(lineups) | |
| lineups_df = lineups_df.replace(0, np.nan) | |
| elif clean_name.endswith(('.xls', '.xlsx')): | |
| lineups_df = pd.read_excel(lineups) | |
| lineups_df = lineups_df.replace(0, np.nan) | |
| else: | |
| st.error('Please upload either a CSV or Excel file for lineups') | |
| return None, None | |
| lineups_df = lineups_df.dropna(how='any') | |
| lineups_df.columns = sport_headers[site_var][type_var][sport_var] | |
| export_df = lineups_df.copy() | |
| # Map the IDs to names | |
| for col in lineups_df.columns: | |
| lineups_df[col] = lineups_df[col].map(name_dict) | |
| return export_df, lineups_df | |
| except Exception as e: | |
| st.error(f'Error loading lineups file: {str(e)}') | |
| return None, None |