File size: 5,005 Bytes
9c7e08b dd89b11 de2ad46 245a9b5 9c7e08b 5c9b782 ab18789 dd89b11 bbf6bb9 9c7e08b dd89b11 9c7e08b bbf6bb9 9c7e08b 795a6d7 e1f40de bbf6bb9 795a6d7 dd89b11 bbf6bb9 795a6d7 dd89b11 bbf6bb9 42712b2 795a6d7 faa4887 7443266 88f31b2 978080b 56ac316 faa4887 637112e bbf6bb9 42712b2 795a6d7 9c7e08b 88f31b2 795a6d7 9c7e08b |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
import streamlit as st
import pandas as pd
def load_contest_file(upload, helper = None, sport = None):
if sport == 'MLB':
pos_list = [' P ', ' C ', '1B ', ' 2B ', ' 3B ', ' SS ', ' OF ']
if upload is not None:
try:
try:
if upload.name.endswith('.csv'):
raw_df = pd.read_csv(upload)
elif upload.name.endswith(('.xls', '.xlsx')):
raw_df = pd.read_excel(upload)
else:
st.error('Please upload either a CSV or Excel file')
return None
except:
raw_df = upload
if helper is not None:
helper_df = helper
print('Made it through initial upload')
# Select and rename essential columns for the actual upload
if helper is None:
df = raw_df[['EntryId', 'EntryName', 'TimeRemaining', 'Points', 'Lineup', 'Player', 'Roster Position', '%Drafted', 'FPTS', 'Salary', 'Team']]
else:
df = raw_df[['EntryId', 'EntryName', 'TimeRemaining', 'Points', 'Lineup', 'Player', 'Roster Position', '%Drafted', 'FPTS']]
df = df.rename(columns={'Roster Position': 'Pos', '%Drafted': 'Own'})
print('Made it through rename')
# Split EntryName into base name and entry count
df['BaseName'] = df['EntryName'].str.replace(r'\s*\(\d+/\d+\)$', '', regex=True)
df['EntryCount'] = df['EntryName'].str.extract(r'\((\d+/\d+)\)')
df['EntryCount'] = df['EntryCount'].fillna('1/1') # Default to 1/1 if no entry count
# Convert ownership percentage to float
try:
df['Own'] = df['Own'].str.replace('%', '').astype(float)
except:
df['Own'] = df['Own'].astype(float)
print('Made it through ownership conversion')
# Select and rename essential columns for the actual upload
if helper is not None:
df_helper = helper_df[['EntryId', 'EntryName', 'TimeRemaining', 'Points', 'Lineup', 'Player', 'Roster Position', '%Drafted', 'FPTS', 'Salary', 'Team']]
df_helper = df_helper.rename(columns={'Roster Position': 'Pos', '%Drafted': 'Own'})
# Split EntryName into base name and entry count
df_helper['BaseName'] = df_helper['EntryName'].str.replace(r'\s*\(\d+/\d+\)$', '', regex=True)
df_helper['EntryCount'] = df_helper['EntryName'].str.extract(r'\((\d+/\d+)\)')
df_helper['EntryCount'] = df_helper['EntryCount'].fillna('1/1') # Default to 1/1 if no entry count
# Convert ownership percentage to float
try:
df_helper['Own'] = df_helper['Own'].str.replace('%', '').astype(float)
except:
df_helper['Own'] = df_helper['Own'].astype(float)
print('Made it through helper')
# Create separate dataframes for different player attributes
if helper is not None:
ownership_df = df[['Player', 'Own']]
fpts_df = df[['Player', 'FPTS']]
salary_df = df_helper[['Player', 'Salary']]
team_df = df_helper[['Player', 'Team']]
pos_df = df[['Player', 'Pos']]
else:
ownership_df = df[['Player', 'Own']]
fpts_df = df[['Player', 'FPTS']]
salary_df = df[['Player', 'Salary']]
team_df = df[['Player', 'Team']]
pos_df = df[['Player', 'Pos']]
print('Made it through dictionaries')
# Create the cleaned dataframe with just the essential columns
cleaned_df = df[['BaseName', 'Lineup']]
cleaned_df['Lineup'] = cleaned_df['Lineup'].replace(pos_list, value=',', regex=True)
check_lineups = cleaned_df.copy()
cleaned_df[['Remove', '1B', '2B', '3B', 'C', 'OF1', 'OF2', 'OF3', 'P1', 'P2', 'SS']] = cleaned_df['Lineup'].str.split(',', expand=True)
cleaned_df = cleaned_df.drop(columns=['Lineup', 'Remove'])
entry_counts = cleaned_df['BaseName'].value_counts()
cleaned_df['EntryCount'] = cleaned_df['BaseName'].map(entry_counts)
cleaned_df = cleaned_df[['BaseName', 'EntryCount', 'P1', 'P2', 'C', '1B', '2B', '3B', 'SS', 'OF1', 'OF2', 'OF3']]
print('Made it through check_lineups')
# Get unique entry names
entry_list = list(set(df['BaseName']))
entry_list.sort()
return cleaned_df, ownership_df, fpts_df, salary_df, team_df, pos_df, entry_list, check_lineups
except Exception as e:
st.error(f'Error loading file: {str(e)}')
return None
return None |