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
|