from constants import PLAYER_NAME_COLUMNS, ordinal def generate_player_table(df): header = [["Player", "Appearances", "Avg. Relative Percentile", "Spent"]] player_stats = [] for name in PLAYER_NAME_COLUMNS: if name in df.columns: attended = df[df[name] == 1] n = len(attended) if n > 0: avg_rel = attended["Relative Position"].mean() player_stats.append((name, n, avg_rel)) player_stats.sort(key=lambda x: x[1], reverse=True) total = sum(n for _, n, _ in player_stats) body = [ [name, n, ordinal(round(avg_rel * 100)), f"£{n * 3:.2f}"] for name, n, avg_rel in player_stats ] footer = [["Total", total, "—", f"£{total * 3:.2f}"]] return header + body + footer