| import pandas as pd | |
| def create_general_comparison(df: pd.DataFrame, entrants: list = None): | |
| loop_list = ['Overall'] + entrants | |
| for entrant in loop_list: | |
| check_cols = ['salary', 'actual_fpts', 'actual_own', 'dupes', 'uniques', 'under_5', 'under_10'] | |
| general_exposures = pd.DataFrame() | |
| for each_col in check_cols: | |
| general_frame = pd.DataFrame() | |
| if entrant == 'Overall': | |
| overall_general = pd.Series(list(df[each_col])).sum() | |
| general_contest_len = len(df) | |
| else: | |
| overall_general = pd.Series(list(df[df['BaseName'] == entrant][each_col])).sum() | |
| general_contest_len = len(df[df['BaseName'] == entrant]) | |
| each_set_name = ['Overall'] | |
| each_general_set = [overall_general] | |
| each_general_len_set = [general_contest_len] | |
| general_count_var = 0 | |
| for each_general in each_general_set: | |
| general_frame['Stat'] = [each_col] | |
| try: | |
| general_frame['Average'] = [each_general / each_general_len_set[general_count_var]] | |
| except: | |
| general_frame['Average'] = [0] | |
| general_frame = general_frame.rename(columns={'Average': f'Average {entrant}'}) | |
| general_exposures = pd.concat([general_exposures, general_frame], ignore_index = True, axis = 0) | |
| general_exposures['Stat'] = general_exposures['Stat'].replace(['salary', 'actual_fpts', 'actual_own', 'dupes', 'uniques', 'under_5', 'under_10'], ['Salary Used', 'Finishing Points', 'Total Ownership', 'Duplications', 'Uniques', 'Under 5', 'Under 10']) | |
| if entrant == 'Overall': | |
| final_exposures = general_exposures | |
| else: | |
| final_exposures = pd.merge(final_exposures, general_exposures, on='Stat', how='outer') | |
| return final_exposures |