| import streamlit as st |
| import numpy as np |
| import pandas as pd |
| import time |
| from fuzzywuzzy import process |
|
|
| |
| from global_func.clean_player_name import clean_player_name |
|
|
| def load_file(upload): |
| pos_values = ['P', 'C', '1B', '2B', '3B', 'SS', 'OF'] |
| if upload is not None: |
| 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 |
| |
| df = raw_df[['EntryId', 'EntryName', 'TimeRemaining', 'Points', 'Lineup', 'Player', 'Roster Position', '%Drafted', 'FPTS']] |
| df = df.rename(columns={'Roster Position': 'Pos', '%Drafted': 'Own'}) |
| |
| |
| 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') |
| |
| |
| |
| |
| df['Lineup'] = df['Lineup'].str.replace(r'\b(' + '|'.join(pos_values) + r')\b', r'\1,', regex=True) |
| |
| |
| |
| max_players = int(df['Lineup'].str.split(',').str.len().max()) |
| |
| if max_players <= 0: |
| st.error('No valid lineups found in the uploaded file') |
| return None |
| |
| |
| for i in range(max_players): |
| df[i] = df['Lineup'].str.split(',').str[i].str.strip() |
| |
| df[i] = df[i].str.replace(r'\s+(' + '|'.join(pos_values) + r')$', '', regex=True) |
| position_dict = dict(zip(df['Player'], df['Pos'])) |
| ownership_dict = dict(zip(df['Player'], df['Own'])) |
| cleaned_df = df.drop(columns=['EntryId', 'EntryName', 'TimeRemaining', 'Points', 'Lineup', 'Player', 'Pos', 'Own', 'FPTS']) |
| entry_list = list(set(df['BaseName'])) |
| entry_list.sort() |
| |
| return cleaned_df, position_dict, ownership_dict, entry_list |
| except Exception as e: |
| st.error(f'Error loading file: {str(e)}') |
| return None |
| return None |