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
raw
history blame
6.06 kB
import streamlit as st
import numpy as np
import pandas as pd
import time
from rapidfuzz import process
import re
## import global functions
from global_func.clean_player_name import clean_player_name
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_file(upload, site_var, type_var, sport_var, upload_type):
if upload is not None:
try:
clean_name = re.sub(r' \(\d+\)', '', upload.name)
print(clean_name)
print(upload.name)
if clean_name.endswith('.csv'):
df = pd.read_csv(upload)
elif clean_name.endswith(('.xls', '.xlsx')):
df = pd.read_excel(upload)
else:
st.error('Please upload either a CSV or Excel file')
return None, None
for col in df.columns:
if "Unnamed" in col:
df = df.drop(columns=[col])
if upload_type == 'portfolio':
df.columns = sport_headers[site_var][type_var][sport_var]
export_df = df.copy()
for col in df.columns:
if df[col].dtype == 'object':
df[col] = df[col].apply(lambda x: clean_player_name(x) if isinstance(x, str) else x)
return export_df, df
except Exception as e:
st.error(f'Error loading file: {str(e)}')
return None
return None