Goal: I want to create one data frame per NFL game week looking like this:
Week 1
Home Away
Arizona Cardinals Tennessee Titans
Los Angeles Chargers Washington Football Team
.
.
.
Week 2
Home Away
.
.
.
What do I have: a data frame of the schedule as grid:
print(df_sched)
0 Week Arizona Cardinals Atlanta Falcons Baltimore Ravens ... San Francisco 49ers Tampa Bay Buccaneers Tennessee Titans Washington Football Team
1 1 @Tennessee Titans Philadelphia Eagles @Las Vegas Raiders ... @Detroit Lions Dallas Cowboys Arizona Cardinals Los Angeles Chargers
2 2 Minnesota Vikings @Tampa Bay Buccaneers Kansas City Chiefs ... @Philadelphia Eagles Atlanta Falcons @Seattle Seahawks New York Giants
3 3 @Jacksonville Jaguars @New York Giants @Detroit Lions ... Green Bay Packers @Los Angeles Rams Indianapolis Colts @Buffalo Bills
4 4 @Los Angeles Rams Washington Football Team @Denver Broncos ... Seattle Seahawks @New England Patriots @New York Jets @Atlanta Falcons
Proposed solution:
- I would create an empty df_temp=['Away', 'Home'] and start filling it using iterrows.
- Based on if there is an '@' in the row value, the team in the row is the 'Home'-Team, else the team in the column header is the 'Home'-Team.
- The result should be one df per game week (df_week1, df_week2, ..., df_week18)
CodePudding user response:
import pandas as pd
cols = ['Week','Arizona Cardinals','Atlanta Falcons','Baltimore Ravens',
'San Francisco 49ers','Tampa Bay Buccaneers','Tennessee Titans',
'Washington Football Team']
data = [[1,'@Tennessee Titans','Philadelphia Eagles','@Las Vegas Raiders','@Detroit Lions','Dallas Cowboys','Arizona Cardinals','Los Angeles Chargers'],
[2,'Minnesota Vikings','@Tampa Bay Buccaneers','Kansas City Chiefs','@Philadelphia Eagles','Atlanta Falcons','@Seattle Seahawks','New York Giants'],
[3,'@Jacksonville Jaguars ','@New York Giants','@Detroit Lions','Green Bay Packers','@Los Angeles Rams','Indianapolis Colts','@Buffalo Bills'],
[4, '@Los Angeles Rams','Washington Football Team','@Denver Broncos','Seattle Seahawks','@New England Patriots','@New York Jets','@Atlanta Falcons']]
df = pd.DataFrame(data, columns=cols)
dfs = {}
for idx, row in df.iterrows():
rows = []
for alpha, beta in row.iteritems():
if alpha == 'Week':
df_name = 'df_week%.2d'