Spaces:
Sleeping
Sleeping
James McCool
commited on
Commit
·
ad242a2
1
Parent(s):
0c21721
Enhance player data handling by updating load functions in load_dk_fd_file, load_file, and load_ss_file to incorporate sport-specific headers, improving CSV and lineup processing for various sports in app.py and global functions.
Browse files- app.py +44 -29
- global_func/exposure_spread.py +12 -10
- global_func/load_dk_fd_file.py +78 -1
- global_func/load_file.py +79 -1
- global_func/load_ss_file.py +77 -1
app.py
CHANGED
|
@@ -32,7 +32,7 @@ stacking_sports = ['MLB', 'NHL', 'NFL', 'LOL']
|
|
| 32 |
player_wrong_names_mlb = ['Enrique Hernandez', 'Joseph Cantillo', 'Mike Soroka', 'Jakob Bauers', 'Temi Fágbénlé']
|
| 33 |
player_right_names_mlb = ['Kike Hernandez', 'Joey Cantillo', 'Michael Soroka', 'Jake Bauers', 'Temi Fagbenle']
|
| 34 |
|
| 35 |
-
def create_position_export_dict(column_name, csv_file):
|
| 36 |
try:
|
| 37 |
# Remove any numbers from the column name to get the position
|
| 38 |
import re
|
|
@@ -42,14 +42,32 @@ def create_position_export_dict(column_name, csv_file):
|
|
| 42 |
|
| 43 |
# Filter CSV file by position
|
| 44 |
if 'Position' in csv_file.columns:
|
| 45 |
-
if
|
| 46 |
-
filtered_df = csv_file
|
| 47 |
-
csv_file['Roster Position'] == 'P'
|
| 48 |
-
]
|
| 49 |
else:
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 53 |
else:
|
| 54 |
# Fallback to all players if no position column found
|
| 55 |
filtered_df = csv_file
|
|
@@ -163,22 +181,19 @@ with tab1:
|
|
| 163 |
if csv_file:
|
| 164 |
if type_var == 'Showdown':
|
| 165 |
st.session_state['csv_file']['Position'] = 'FLEX'
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
| 169 |
-
|
| 170 |
-
|
| 171 |
-
|
| 172 |
-
|
| 173 |
-
|
| 174 |
-
|
| 175 |
-
|
| 176 |
-
|
| 177 |
-
|
| 178 |
-
|
| 179 |
-
elif sport_var == 'F1':
|
| 180 |
-
st.session_state['csv_file']['Position'] = 'FLEX'
|
| 181 |
-
st.session_state['csv_file']['Team'] = 'F1'
|
| 182 |
# st.session_state['csv_file'] = st.session_state['csv_file'].drop_duplicates(subset=['Name'])
|
| 183 |
st.success('Projections file loaded successfully!')
|
| 184 |
st.dataframe(st.session_state['csv_file'].head(10))
|
|
@@ -204,19 +219,19 @@ with tab1:
|
|
| 204 |
if 'portfolio' not in st.session_state:
|
| 205 |
if portfolio_file:
|
| 206 |
if upload_toggle == 'SaberSim (Just IDs)':
|
| 207 |
-
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_ss_file(portfolio_file, st.session_state['csv_file'])
|
| 208 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
| 209 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].reset_index(drop=True)
|
| 210 |
st.session_state['portfolio'] = st.session_state['portfolio'].dropna(how='all')
|
| 211 |
st.session_state['portfolio'] = st.session_state['portfolio'].reset_index(drop=True)
|
| 212 |
elif upload_toggle == 'Draftkings/Fanduel (Names + IDs)':
|
| 213 |
-
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_dk_fd_file(portfolio_file, st.session_state['csv_file'])
|
| 214 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
| 215 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].reset_index(drop=True)
|
| 216 |
st.session_state['portfolio'] = st.session_state['portfolio'].dropna(how='all')
|
| 217 |
st.session_state['portfolio'] = st.session_state['portfolio'].reset_index(drop=True)
|
| 218 |
else:
|
| 219 |
-
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_file(portfolio_file)
|
| 220 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
| 221 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].reset_index(drop=True)
|
| 222 |
st.session_state['portfolio'] = st.session_state['portfolio'].dropna(how='all')
|
|
@@ -259,7 +274,7 @@ with tab1:
|
|
| 259 |
)
|
| 260 |
|
| 261 |
if projections_file:
|
| 262 |
-
export_projections, projections = load_file(projections_file)
|
| 263 |
if projections is not None:
|
| 264 |
st.success('Projections file loaded successfully!')
|
| 265 |
try:
|
|
@@ -1609,7 +1624,7 @@ with tab2:
|
|
| 1609 |
for col in st.session_state['export_file'].columns:
|
| 1610 |
if col not in excluded_cols:
|
| 1611 |
# Create position-specific export dictionary on the fly
|
| 1612 |
-
position_dict = create_position_export_dict(col, st.session_state['csv_file'])
|
| 1613 |
st.session_state['export_file'][col] = st.session_state['export_file'][col].map(position_dict)
|
| 1614 |
|
| 1615 |
if 'export_file' in st.session_state:
|
|
|
|
| 32 |
player_wrong_names_mlb = ['Enrique Hernandez', 'Joseph Cantillo', 'Mike Soroka', 'Jakob Bauers', 'Temi Fágbénlé']
|
| 33 |
player_right_names_mlb = ['Kike Hernandez', 'Joey Cantillo', 'Michael Soroka', 'Jake Bauers', 'Temi Fagbenle']
|
| 34 |
|
| 35 |
+
def create_position_export_dict(column_name, csv_file, site_var, type_var, sport_var):
|
| 36 |
try:
|
| 37 |
# Remove any numbers from the column name to get the position
|
| 38 |
import re
|
|
|
|
| 42 |
|
| 43 |
# Filter CSV file by position
|
| 44 |
if 'Position' in csv_file.columns:
|
| 45 |
+
if type_var == 'Showdown':
|
| 46 |
+
filtered_df = csv_file.copy()
|
|
|
|
|
|
|
| 47 |
else:
|
| 48 |
+
if position_filter == 'SP':
|
| 49 |
+
filtered_df = csv_file[
|
| 50 |
+
csv_file['Roster Position'] == 'P'
|
| 51 |
+
]
|
| 52 |
+
elif position_filter == 'CPT':
|
| 53 |
+
filtered_df = csv_file.copy()
|
| 54 |
+
elif position_filter == 'FLEX' or position_filter == 'UTIL':
|
| 55 |
+
if sport_var == 'NFL':
|
| 56 |
+
filtered_df = csv_file['Position'].isin(['RB', 'WR', 'TE'])
|
| 57 |
+
elif sport_var == 'SOC':
|
| 58 |
+
filtered_df = csv_file['Position'].str.contains(['D', 'M', 'F'], na=False, regex=False)
|
| 59 |
+
elif sport_var == 'NCAAF':
|
| 60 |
+
filtered_df = csv_file['Position'].isin(['RB', 'WR'])
|
| 61 |
+
elif sport_var == 'NHL':
|
| 62 |
+
filtered_df = csv_file['Position'].str.contains(['C', 'W', 'D'], na=False, regex=False)
|
| 63 |
+
else:
|
| 64 |
+
filtered_df = csv_file.copy()
|
| 65 |
+
elif position_filter == 'SFLEX':
|
| 66 |
+
filtered_df = csv_file.copy()
|
| 67 |
+
else:
|
| 68 |
+
filtered_df = csv_file[
|
| 69 |
+
csv_file['Position'].str.contains(position_filter, na=False, regex=False)
|
| 70 |
+
]
|
| 71 |
else:
|
| 72 |
# Fallback to all players if no position column found
|
| 73 |
filtered_df = csv_file
|
|
|
|
| 181 |
if csv_file:
|
| 182 |
if type_var == 'Showdown':
|
| 183 |
st.session_state['csv_file']['Position'] = 'FLEX'
|
| 184 |
+
else:
|
| 185 |
+
if sport_var == 'GOLF':
|
| 186 |
+
st.session_state['csv_file']['Position'] = 'FLEX'
|
| 187 |
+
st.session_state['csv_file']['Team'] = 'GOLF'
|
| 188 |
+
elif sport_var == 'TENNIS':
|
| 189 |
+
st.session_state['csv_file']['Position'] = 'FLEX'
|
| 190 |
+
st.session_state['csv_file']['Team'] = 'TENNIS'
|
| 191 |
+
elif sport_var == 'MMA':
|
| 192 |
+
st.session_state['csv_file']['Position'] = 'FLEX'
|
| 193 |
+
st.session_state['csv_file']['Team'] = 'MMA'
|
| 194 |
+
elif sport_var == 'NASCAR':
|
| 195 |
+
st.session_state['csv_file']['Position'] = 'FLEX'
|
| 196 |
+
st.session_state['csv_file']['Team'] = 'NASCAR'
|
|
|
|
|
|
|
|
|
|
| 197 |
# st.session_state['csv_file'] = st.session_state['csv_file'].drop_duplicates(subset=['Name'])
|
| 198 |
st.success('Projections file loaded successfully!')
|
| 199 |
st.dataframe(st.session_state['csv_file'].head(10))
|
|
|
|
| 219 |
if 'portfolio' not in st.session_state:
|
| 220 |
if portfolio_file:
|
| 221 |
if upload_toggle == 'SaberSim (Just IDs)':
|
| 222 |
+
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_ss_file(portfolio_file, st.session_state['csv_file'], site_var, type_var, sport_var)
|
| 223 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
| 224 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].reset_index(drop=True)
|
| 225 |
st.session_state['portfolio'] = st.session_state['portfolio'].dropna(how='all')
|
| 226 |
st.session_state['portfolio'] = st.session_state['portfolio'].reset_index(drop=True)
|
| 227 |
elif upload_toggle == 'Draftkings/Fanduel (Names + IDs)':
|
| 228 |
+
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_dk_fd_file(portfolio_file, st.session_state['csv_file'], site_var, type_var, sport_var)
|
| 229 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
| 230 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].reset_index(drop=True)
|
| 231 |
st.session_state['portfolio'] = st.session_state['portfolio'].dropna(how='all')
|
| 232 |
st.session_state['portfolio'] = st.session_state['portfolio'].reset_index(drop=True)
|
| 233 |
else:
|
| 234 |
+
st.session_state['export_portfolio'], st.session_state['portfolio'] = load_file(portfolio_file, site_var, type_var, sport_var, 'portfolio')
|
| 235 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].dropna(how='all')
|
| 236 |
st.session_state['export_portfolio'] = st.session_state['export_portfolio'].reset_index(drop=True)
|
| 237 |
st.session_state['portfolio'] = st.session_state['portfolio'].dropna(how='all')
|
|
|
|
| 274 |
)
|
| 275 |
|
| 276 |
if projections_file:
|
| 277 |
+
export_projections, projections = load_file(projections_file, site_var, type_var, sport_var, 'projections')
|
| 278 |
if projections is not None:
|
| 279 |
st.success('Projections file loaded successfully!')
|
| 280 |
try:
|
|
|
|
| 1624 |
for col in st.session_state['export_file'].columns:
|
| 1625 |
if col not in excluded_cols:
|
| 1626 |
# Create position-specific export dictionary on the fly
|
| 1627 |
+
position_dict = create_position_export_dict(col, st.session_state['csv_file'], site_var, type_var, sport_var)
|
| 1628 |
st.session_state['export_file'][col] = st.session_state['export_file'][col].map(position_dict)
|
| 1629 |
|
| 1630 |
if 'export_file' in st.session_state:
|
global_func/exposure_spread.py
CHANGED
|
@@ -99,7 +99,7 @@ def check_nascar_position_eligibility(column_name, player_positions):
|
|
| 99 |
return any(pos in ['D'] for pos in player_positions)
|
| 100 |
return True
|
| 101 |
|
| 102 |
-
def
|
| 103 |
if 'QB' in column_name:
|
| 104 |
return 'QB' in player_positions
|
| 105 |
elif 'RB' in column_name:
|
|
@@ -108,7 +108,7 @@ def check_cfb_position_eligibility(column_name, player_positions):
|
|
| 108 |
return 'WR' in player_positions
|
| 109 |
elif 'FLEX' in column_name:
|
| 110 |
return any(pos in ['RB', 'WR'] for pos in player_positions)
|
| 111 |
-
elif '
|
| 112 |
return any(pos in ['RB', 'WR', 'QB'] for pos in player_positions)
|
| 113 |
return False
|
| 114 |
|
|
@@ -122,9 +122,9 @@ def check_nhl_position_eligibility(column_name, player_positions):
|
|
| 122 |
elif 'G' in column_name:
|
| 123 |
return 'G' in player_positions
|
| 124 |
elif 'FLEX' in column_name:
|
| 125 |
-
return
|
| 126 |
elif 'UTIL' in column_name:
|
| 127 |
-
|
| 128 |
return False
|
| 129 |
|
| 130 |
def check_position_eligibility(sport, column_name, player_positions):
|
|
@@ -267,11 +267,12 @@ def exposure_spread(working_frame, exposure_player, exposure_target, exposure_st
|
|
| 267 |
(projections_df['position'].apply(lambda x: has_position_overlap(x, comp_player_position)))
|
| 268 |
]
|
| 269 |
if sport_var in stacking_sports:
|
| 270 |
-
if
|
| 271 |
-
|
| 272 |
-
|
| 273 |
-
|
| 274 |
-
|
|
|
|
| 275 |
|
| 276 |
if remove_teams is not None:
|
| 277 |
remove_mask = comparable_players.apply(
|
|
@@ -291,10 +292,11 @@ def exposure_spread(working_frame, exposure_player, exposure_target, exposure_st
|
|
| 291 |
if working_frame.iloc[row]['salary'] - projections_df[projections_df['player_names'] == row_data[col]]['salary'].iloc[0] + projections_df[projections_df['player_names'] == exposure_player]['salary'].iloc[0] <= salary_max:
|
| 292 |
# Get the replacement player's positions
|
| 293 |
replacement_player_positions = projections_df[projections_df['player_names'] == row_data[col]]['position'].iloc[0].split('/')
|
|
|
|
| 294 |
|
| 295 |
# Check if the replacement player is eligible for this column
|
| 296 |
if type_var == 'Classic':
|
| 297 |
-
if check_position_eligibility(sport_var, col,
|
| 298 |
working_frame.at[row, col] = exposure_player
|
| 299 |
change_counter += 1
|
| 300 |
break
|
|
|
|
| 99 |
return any(pos in ['D'] for pos in player_positions)
|
| 100 |
return True
|
| 101 |
|
| 102 |
+
def check_ncaaf_position_eligibility(column_name, player_positions):
|
| 103 |
if 'QB' in column_name:
|
| 104 |
return 'QB' in player_positions
|
| 105 |
elif 'RB' in column_name:
|
|
|
|
| 108 |
return 'WR' in player_positions
|
| 109 |
elif 'FLEX' in column_name:
|
| 110 |
return any(pos in ['RB', 'WR'] for pos in player_positions)
|
| 111 |
+
elif 'SFLEX' in column_name:
|
| 112 |
return any(pos in ['RB', 'WR', 'QB'] for pos in player_positions)
|
| 113 |
return False
|
| 114 |
|
|
|
|
| 122 |
elif 'G' in column_name:
|
| 123 |
return 'G' in player_positions
|
| 124 |
elif 'FLEX' in column_name:
|
| 125 |
+
return any(pos in ['C', 'W', 'D'] for pos in player_positions)
|
| 126 |
elif 'UTIL' in column_name:
|
| 127 |
+
return any(pos in ['C', 'W', 'D'] for pos in player_positions)
|
| 128 |
return False
|
| 129 |
|
| 130 |
def check_position_eligibility(sport, column_name, player_positions):
|
|
|
|
| 267 |
(projections_df['position'].apply(lambda x: has_position_overlap(x, comp_player_position)))
|
| 268 |
]
|
| 269 |
if sport_var in stacking_sports:
|
| 270 |
+
if sport_var in stacking_sports:
|
| 271 |
+
if working_frame.iloc[row]['Size'] == 5 and comp_team != working_frame.iloc[row]['Stack']:
|
| 272 |
+
remove_mask = comparable_players.apply(
|
| 273 |
+
lambda player_row: not any(team in list(player_row) for team in [working_frame.iloc[row]['Stack']]), axis=1
|
| 274 |
+
)
|
| 275 |
+
comparable_players = comparable_players[remove_mask]
|
| 276 |
|
| 277 |
if remove_teams is not None:
|
| 278 |
remove_mask = comparable_players.apply(
|
|
|
|
| 292 |
if working_frame.iloc[row]['salary'] - projections_df[projections_df['player_names'] == row_data[col]]['salary'].iloc[0] + projections_df[projections_df['player_names'] == exposure_player]['salary'].iloc[0] <= salary_max:
|
| 293 |
# Get the replacement player's positions
|
| 294 |
replacement_player_positions = projections_df[projections_df['player_names'] == row_data[col]]['position'].iloc[0].split('/')
|
| 295 |
+
exposure_player_positions = projections_df[projections_df['player_names'] == exposure_player]['position'].iloc[0].split('/')
|
| 296 |
|
| 297 |
# Check if the replacement player is eligible for this column
|
| 298 |
if type_var == 'Classic':
|
| 299 |
+
if check_position_eligibility(sport_var, col, exposure_player_positions):
|
| 300 |
working_frame.at[row, col] = exposure_player
|
| 301 |
change_counter += 1
|
| 302 |
break
|
global_func/load_dk_fd_file.py
CHANGED
|
@@ -5,7 +5,82 @@ import time
|
|
| 5 |
from rapidfuzz import process
|
| 6 |
import re
|
| 7 |
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
df = csv_file.copy()
|
| 10 |
try:
|
| 11 |
name_dict = dict(zip(df['Name + ID'], df['Name']))
|
|
@@ -34,6 +109,8 @@ def load_dk_fd_file(lineups, csv_file):
|
|
| 34 |
except:
|
| 35 |
pass
|
| 36 |
|
|
|
|
|
|
|
| 37 |
export_df = lineups_df.copy()
|
| 38 |
|
| 39 |
# Map the IDs to names
|
|
|
|
| 5 |
from rapidfuzz import process
|
| 6 |
import re
|
| 7 |
|
| 8 |
+
sport_headers = {
|
| 9 |
+
'Draftkings': {
|
| 10 |
+
'Classic' : {
|
| 11 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 12 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 13 |
+
'F1' : ['CPT', 'DRIVER1', 'DRIVER2', 'DRIVER3', 'DRIVER4', 'CONST'],
|
| 14 |
+
'SOC' : ['F1', 'F2', 'M1', 'M2', 'D1', 'D2', 'GK', 'UTIL'],
|
| 15 |
+
'TENNIS' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 16 |
+
'WNBA' : ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'],
|
| 17 |
+
'NASCAR' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 18 |
+
'MLB' : ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3'],
|
| 19 |
+
'NFL' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'],
|
| 20 |
+
'CFL' : ['QB', 'RB', 'WR1', 'WR2', 'FLEX1', 'FLEX2', 'DST'],
|
| 21 |
+
'LOL' : ['CPT', 'TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'],
|
| 22 |
+
'CSGO' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 23 |
+
'COD' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'TEAM'],
|
| 24 |
+
'NHL' : ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'UTIL', 'G'],
|
| 25 |
+
'NCAAF' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'],
|
| 26 |
+
},
|
| 27 |
+
'Showdown' : {
|
| 28 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 29 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 30 |
+
'F1' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 31 |
+
'SOC' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 32 |
+
'TENNIS' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 33 |
+
'WNBA' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 34 |
+
'NASCAR' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 35 |
+
'MLB' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 36 |
+
'NFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 37 |
+
'CFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 38 |
+
'LOL' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 39 |
+
'CSGO' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 40 |
+
'COD' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 41 |
+
'NHL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 42 |
+
'NCAAF' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 43 |
+
},
|
| 44 |
+
},
|
| 45 |
+
'Fanduel': {
|
| 46 |
+
'Classic' : {
|
| 47 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 48 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 49 |
+
'F1' : ['CPT', 'DRIVER1', 'DRIVER2', 'DRIVER3', 'DRIVER4', 'CONST'],
|
| 50 |
+
'SOC' : ['F1', 'F2', 'M1', 'M2', 'D1', 'D2', 'GK', 'UTIL'],
|
| 51 |
+
'TENNIS' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 52 |
+
'WNBA' : ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'],
|
| 53 |
+
'NASCAR' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 54 |
+
'MLB' : ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3'],
|
| 55 |
+
'NFL' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'],
|
| 56 |
+
'CFL' : ['QB', 'RB', 'WR1', 'WR2', 'FLEX1', 'FLEX2', 'DST'],
|
| 57 |
+
'LOL' : ['CPT', 'TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'],
|
| 58 |
+
'CSGO' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 59 |
+
'COD' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'TEAM'],
|
| 60 |
+
'NHL' : ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'UTIL', 'G'],
|
| 61 |
+
'NCAAF' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'],
|
| 62 |
+
},
|
| 63 |
+
'Showdown' : {
|
| 64 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 65 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 66 |
+
'F1' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 67 |
+
'SOC' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 68 |
+
'TENNIS' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 69 |
+
'WNBA' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 70 |
+
'NASCAR' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 71 |
+
'MLB' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 72 |
+
'NFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 73 |
+
'CFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 74 |
+
'LOL' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 75 |
+
'CSGO' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 76 |
+
'COD' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 77 |
+
'NHL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 78 |
+
'NCAAF' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 79 |
+
},
|
| 80 |
+
},
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
def load_dk_fd_file(lineups, csv_file, site_var, type_var, sport_var):
|
| 84 |
df = csv_file.copy()
|
| 85 |
try:
|
| 86 |
name_dict = dict(zip(df['Name + ID'], df['Name']))
|
|
|
|
| 109 |
except:
|
| 110 |
pass
|
| 111 |
|
| 112 |
+
lineups_df.columns = sport_headers[site_var][type_var][sport_var]
|
| 113 |
+
|
| 114 |
export_df = lineups_df.copy()
|
| 115 |
|
| 116 |
# Map the IDs to names
|
global_func/load_file.py
CHANGED
|
@@ -8,7 +8,82 @@ import re
|
|
| 8 |
## import global functions
|
| 9 |
from global_func.clean_player_name import clean_player_name
|
| 10 |
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
if upload is not None:
|
| 13 |
try:
|
| 14 |
clean_name = re.sub(r' \(\d+\)', '', upload.name)
|
|
@@ -27,6 +102,9 @@ def load_file(upload):
|
|
| 27 |
for col in df.columns:
|
| 28 |
if "Unnamed" in col:
|
| 29 |
df = df.drop(columns=[col])
|
|
|
|
|
|
|
|
|
|
| 30 |
|
| 31 |
export_df = df.copy()
|
| 32 |
|
|
|
|
| 8 |
## import global functions
|
| 9 |
from global_func.clean_player_name import clean_player_name
|
| 10 |
|
| 11 |
+
sport_headers = {
|
| 12 |
+
'Draftkings': {
|
| 13 |
+
'Classic' : {
|
| 14 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 15 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 16 |
+
'F1' : ['CPT', 'DRIVER1', 'DRIVER2', 'DRIVER3', 'DRIVER4', 'CONST'],
|
| 17 |
+
'SOC' : ['F1', 'F2', 'M1', 'M2', 'D1', 'D2', 'GK', 'UTIL'],
|
| 18 |
+
'TENNIS' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 19 |
+
'WNBA' : ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'],
|
| 20 |
+
'NASCAR' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 21 |
+
'MLB' : ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3'],
|
| 22 |
+
'NFL' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'],
|
| 23 |
+
'CFL' : ['QB', 'RB', 'WR1', 'WR2', 'FLEX1', 'FLEX2', 'DST'],
|
| 24 |
+
'LOL' : ['CPT', 'TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'],
|
| 25 |
+
'CSGO' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 26 |
+
'COD' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'TEAM'],
|
| 27 |
+
'NHL' : ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'UTIL', 'G'],
|
| 28 |
+
'NCAAF' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'],
|
| 29 |
+
},
|
| 30 |
+
'Showdown' : {
|
| 31 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 32 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 33 |
+
'F1' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 34 |
+
'SOC' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 35 |
+
'TENNIS' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 36 |
+
'WNBA' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 37 |
+
'NASCAR' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 38 |
+
'MLB' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 39 |
+
'NFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 40 |
+
'CFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 41 |
+
'LOL' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 42 |
+
'CSGO' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 43 |
+
'COD' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 44 |
+
'NHL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 45 |
+
'NCAAF' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 46 |
+
},
|
| 47 |
+
},
|
| 48 |
+
'Fanduel': {
|
| 49 |
+
'Classic' : {
|
| 50 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 51 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 52 |
+
'F1' : ['CPT', 'DRIVER1', 'DRIVER2', 'DRIVER3', 'DRIVER4', 'CONST'],
|
| 53 |
+
'SOC' : ['F1', 'F2', 'M1', 'M2', 'D1', 'D2', 'GK', 'UTIL'],
|
| 54 |
+
'TENNIS' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 55 |
+
'WNBA' : ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'],
|
| 56 |
+
'NASCAR' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 57 |
+
'MLB' : ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3'],
|
| 58 |
+
'NFL' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'],
|
| 59 |
+
'CFL' : ['QB', 'RB', 'WR1', 'WR2', 'FLEX1', 'FLEX2', 'DST'],
|
| 60 |
+
'LOL' : ['CPT', 'TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'],
|
| 61 |
+
'CSGO' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 62 |
+
'COD' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'TEAM'],
|
| 63 |
+
'NHL' : ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'UTIL', 'G'],
|
| 64 |
+
'NCAAF' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'],
|
| 65 |
+
},
|
| 66 |
+
'Showdown' : {
|
| 67 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 68 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 69 |
+
'F1' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 70 |
+
'SOC' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 71 |
+
'TENNIS' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 72 |
+
'WNBA' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 73 |
+
'NASCAR' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 74 |
+
'MLB' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 75 |
+
'NFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 76 |
+
'CFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 77 |
+
'LOL' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 78 |
+
'CSGO' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 79 |
+
'COD' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 80 |
+
'NHL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 81 |
+
'NCAAF' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 82 |
+
},
|
| 83 |
+
},
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
def load_file(upload, site_var, type_var, sport_var, upload_type):
|
| 87 |
if upload is not None:
|
| 88 |
try:
|
| 89 |
clean_name = re.sub(r' \(\d+\)', '', upload.name)
|
|
|
|
| 102 |
for col in df.columns:
|
| 103 |
if "Unnamed" in col:
|
| 104 |
df = df.drop(columns=[col])
|
| 105 |
+
|
| 106 |
+
if upload_type == 'portfolio':
|
| 107 |
+
df.columns = sport_headers[site_var][type_var][sport_var]
|
| 108 |
|
| 109 |
export_df = df.copy()
|
| 110 |
|
global_func/load_ss_file.py
CHANGED
|
@@ -5,7 +5,82 @@ import time
|
|
| 5 |
from rapidfuzz import process
|
| 6 |
import re
|
| 7 |
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
df = csv_file.copy()
|
| 10 |
try:
|
| 11 |
name_dict = dict(zip(df['ID'], df['Name']))
|
|
@@ -29,6 +104,7 @@ def load_ss_file(lineups, csv_file):
|
|
| 29 |
st.error('Please upload either a CSV or Excel file for lineups')
|
| 30 |
return None, None
|
| 31 |
lineups_df = lineups_df.dropna(how='any')
|
|
|
|
| 32 |
export_df = lineups_df.copy()
|
| 33 |
|
| 34 |
# Map the IDs to names
|
|
|
|
| 5 |
from rapidfuzz import process
|
| 6 |
import re
|
| 7 |
|
| 8 |
+
sport_headers = {
|
| 9 |
+
'Draftkings': {
|
| 10 |
+
'Classic' : {
|
| 11 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 12 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 13 |
+
'F1' : ['CPT', 'DRIVER1', 'DRIVER2', 'DRIVER3', 'DRIVER4', 'CONST'],
|
| 14 |
+
'SOC' : ['F1', 'F2', 'M1', 'M2', 'D1', 'D2', 'GK', 'UTIL'],
|
| 15 |
+
'TENNIS' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 16 |
+
'WNBA' : ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'],
|
| 17 |
+
'NASCAR' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 18 |
+
'MLB' : ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3'],
|
| 19 |
+
'NFL' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'],
|
| 20 |
+
'CFL' : ['QB', 'RB', 'WR1', 'WR2', 'FLEX1', 'FLEX2', 'DST'],
|
| 21 |
+
'LOL' : ['CPT', 'TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'],
|
| 22 |
+
'CSGO' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 23 |
+
'COD' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'TEAM'],
|
| 24 |
+
'NHL' : ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'UTIL', 'G'],
|
| 25 |
+
'NCAAF' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'],
|
| 26 |
+
},
|
| 27 |
+
'Showdown' : {
|
| 28 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 29 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 30 |
+
'F1' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 31 |
+
'SOC' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 32 |
+
'TENNIS' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 33 |
+
'WNBA' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 34 |
+
'NASCAR' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 35 |
+
'MLB' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 36 |
+
'NFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 37 |
+
'CFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 38 |
+
'LOL' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 39 |
+
'CSGO' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 40 |
+
'COD' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 41 |
+
'NHL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 42 |
+
'NCAAF' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 43 |
+
},
|
| 44 |
+
},
|
| 45 |
+
'Fanduel': {
|
| 46 |
+
'Classic' : {
|
| 47 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 48 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 49 |
+
'F1' : ['CPT', 'DRIVER1', 'DRIVER2', 'DRIVER3', 'DRIVER4', 'CONST'],
|
| 50 |
+
'SOC' : ['F1', 'F2', 'M1', 'M2', 'D1', 'D2', 'GK', 'UTIL'],
|
| 51 |
+
'TENNIS' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 52 |
+
'WNBA' : ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'],
|
| 53 |
+
'NASCAR' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 54 |
+
'MLB' : ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3'],
|
| 55 |
+
'NFL' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'],
|
| 56 |
+
'CFL' : ['QB', 'RB', 'WR1', 'WR2', 'FLEX1', 'FLEX2', 'DST'],
|
| 57 |
+
'LOL' : ['CPT', 'TOP', 'JNG', 'MID', 'ADC', 'SUP', 'TEAM'],
|
| 58 |
+
'CSGO' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 59 |
+
'COD' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'TEAM'],
|
| 60 |
+
'NHL' : ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'UTIL', 'G'],
|
| 61 |
+
'NCAAF' : ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'FLEX', 'SFLEX'],
|
| 62 |
+
},
|
| 63 |
+
'Showdown' : {
|
| 64 |
+
'MMA' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 65 |
+
'GOLF' : ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'],
|
| 66 |
+
'F1' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 67 |
+
'SOC' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 68 |
+
'TENNIS' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 69 |
+
'WNBA' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 70 |
+
'NASCAR' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 71 |
+
'MLB' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 72 |
+
'NFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 73 |
+
'CFL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 74 |
+
'LOL' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 75 |
+
'CSGO' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 76 |
+
'COD' : ['CPT1', 'CPT2', 'FLEX1', 'FLEX2'],
|
| 77 |
+
'NHL' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 78 |
+
'NCAAF' : ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'],
|
| 79 |
+
},
|
| 80 |
+
},
|
| 81 |
+
}
|
| 82 |
+
|
| 83 |
+
def load_ss_file(lineups, csv_file, site_var, type_var, sport_var):
|
| 84 |
df = csv_file.copy()
|
| 85 |
try:
|
| 86 |
name_dict = dict(zip(df['ID'], df['Name']))
|
|
|
|
| 104 |
st.error('Please upload either a CSV or Excel file for lineups')
|
| 105 |
return None, None
|
| 106 |
lineups_df = lineups_df.dropna(how='any')
|
| 107 |
+
lineups_df.columns = sport_headers[site_var][type_var][sport_var]
|
| 108 |
export_df = lineups_df.copy()
|
| 109 |
|
| 110 |
# Map the IDs to names
|