James McCool
commited on
Commit
·
a266f29
1
Parent(s):
53d6dd0
Enhance player lineup processing in load_contest_file function
Browse files- Improved the logic for cleaning player names by handling position indicators more effectively, ensuring accurate player assignments.
- Updated debug prints to show both original and cleaned lineups, enhancing traceability during execution.
- These changes contribute to ongoing efforts to refine data handling and improve user experience within the application.
global_func/load_contest_file.py
CHANGED
|
@@ -84,20 +84,46 @@ def load_contest_file(upload, sport):
|
|
| 84 |
|
| 85 |
# Process each lineup
|
| 86 |
for idx, row in df.iterrows():
|
| 87 |
-
# Get all players in the lineup
|
| 88 |
players = row['Lineup'].split(',')
|
| 89 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
print(f"\nProcessing lineup {idx}:")
|
| 91 |
-
print(f"
|
|
|
|
| 92 |
|
| 93 |
# First pass: fill required positions (excluding OF)
|
| 94 |
required_positions = ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS']
|
| 95 |
for pos in required_positions:
|
| 96 |
-
for player in
|
| 97 |
if is_eligible_for_position(player, pos):
|
| 98 |
print(f"Assigning {player} to {pos}")
|
| 99 |
df.at[idx, pos] = player
|
| 100 |
-
|
| 101 |
break
|
| 102 |
else:
|
| 103 |
print(f"No player found for {pos}")
|
|
@@ -105,11 +131,11 @@ def load_contest_file(upload, sport):
|
|
| 105 |
# Second pass: fill OF positions with remaining players
|
| 106 |
of_positions = ['OF1', 'OF2', 'OF3']
|
| 107 |
for pos in of_positions:
|
| 108 |
-
for player in
|
| 109 |
if 'OF' in pos_dict.get(player, '').split('/'):
|
| 110 |
print(f"Assigning {player} to {pos}")
|
| 111 |
df.at[idx, pos] = player
|
| 112 |
-
|
| 113 |
break
|
| 114 |
else:
|
| 115 |
print(f"No player found for {pos}, using -1")
|
|
|
|
| 84 |
|
| 85 |
# Process each lineup
|
| 86 |
for idx, row in df.iterrows():
|
| 87 |
+
# Get all players in the lineup and clean up the strings
|
| 88 |
players = row['Lineup'].split(',')
|
| 89 |
+
cleaned_players = []
|
| 90 |
+
current_position = None
|
| 91 |
+
|
| 92 |
+
for item in players:
|
| 93 |
+
item = item.strip()
|
| 94 |
+
# If the item is just a position indicator, store it
|
| 95 |
+
if item in pos_values:
|
| 96 |
+
current_position = item
|
| 97 |
+
continue
|
| 98 |
+
|
| 99 |
+
# If we have a position and a player name
|
| 100 |
+
if current_position:
|
| 101 |
+
# Remove any trailing position indicators
|
| 102 |
+
for pos in pos_values:
|
| 103 |
+
if item.endswith(pos):
|
| 104 |
+
item = item[:-len(pos)].strip()
|
| 105 |
+
cleaned_players.append(item)
|
| 106 |
+
current_position = None
|
| 107 |
+
else:
|
| 108 |
+
# If we somehow got a player without a position, try to clean it
|
| 109 |
+
for pos in pos_values:
|
| 110 |
+
if item.endswith(pos):
|
| 111 |
+
item = item[:-len(pos)].strip()
|
| 112 |
+
break
|
| 113 |
+
cleaned_players.append(item)
|
| 114 |
+
|
| 115 |
print(f"\nProcessing lineup {idx}:")
|
| 116 |
+
print(f"Original lineup: {row['Lineup']}")
|
| 117 |
+
print(f"Cleaned players: {cleaned_players}")
|
| 118 |
|
| 119 |
# First pass: fill required positions (excluding OF)
|
| 120 |
required_positions = ['SP1', 'SP2', 'C', '1B', '2B', '3B', 'SS']
|
| 121 |
for pos in required_positions:
|
| 122 |
+
for player in cleaned_players:
|
| 123 |
if is_eligible_for_position(player, pos):
|
| 124 |
print(f"Assigning {player} to {pos}")
|
| 125 |
df.at[idx, pos] = player
|
| 126 |
+
cleaned_players.remove(player)
|
| 127 |
break
|
| 128 |
else:
|
| 129 |
print(f"No player found for {pos}")
|
|
|
|
| 131 |
# Second pass: fill OF positions with remaining players
|
| 132 |
of_positions = ['OF1', 'OF2', 'OF3']
|
| 133 |
for pos in of_positions:
|
| 134 |
+
for player in cleaned_players:
|
| 135 |
if 'OF' in pos_dict.get(player, '').split('/'):
|
| 136 |
print(f"Assigning {player} to {pos}")
|
| 137 |
df.at[idx, pos] = player
|
| 138 |
+
cleaned_players.remove(player)
|
| 139 |
break
|
| 140 |
else:
|
| 141 |
print(f"No player found for {pos}, using -1")
|