将我的列表以正确的顺序添加到df时遇到问题。尝试使每个循环转到下一行,而不添加到第一行。而是将循环添加到列表,但在同一行中继续添加列,而不是保持列的形状并将循环添加到下一行。仅此而已,我真的没有什么可添加的,但是SO说我需要多说些什么,因为我有“大部分是代码”。
代码:
import requests
from pprint import pprint as pp
import pandas as pd
import datetime
req = requests.get('https://statsapi.web.nhl.com/api/v1/schedule?startDate=2017-10-04&endDate=2017-10-07&expand=schedule.teams,schedule.linescore,schedule.broadcasts.all,schedule.ticket,schedule.game.content.media.epg,schedule.radioBroadcasts,schedule.metadata,schedule.game.seriesSummary,seriesSummary.series&leaderCategories=&leaderGameTypes=R&site=en_nhl&teamId=&gameType=&timecode=')
data = req.json()
outcome = []
for item in data['dates']:
date = item['date']
games = item['games']
print(date)
for game in games:
gamepk = game['gamePk']
print(gamepk)
url = requests.get('http://statsapi.web.nhl.com/api/v1/game/' + str(gamepk) + '/feed/live')
pbp_dict = url.json()
linescore = pbp_dict['liveData']['linescore']
outcome.append(pbp_dict['gamePk'])
outcome.append(pbp_dict['gameData']['game']['type'])
outcome.append(pbp_dict['gameData']['game']['season'])
outcome.append(date)
outcome.append(pbp_dict['liveData']['linescore']['teams']['home']['team']['id'])
outcome.append(pbp_dict['liveData']['linescore']['teams']['home']['team']['name'])
outcome.append(pbp_dict['liveData']['linescore']['teams']['home']['team']['abbreviation'])
outcome.append(pbp_dict['liveData']['linescore']['teams']['home']['goals'])
outcome.append(pbp_dict['liveData']['linescore']['teams']['away']['team']['id'])
outcome.append(pbp_dict['liveData']['linescore']['teams']['away']['team']['name'])
outcome.append(pbp_dict['liveData']['linescore']['teams']['away']['team']['abbreviation'])
outcome.append(pbp_dict['liveData']['linescore']['teams']['away']['goals'])
if pbp_dict['liveData']['linescore']['currentPeriod'] == 4:
outcome.append(1)
else:
outcome.append(0)
if pbp_dict['liveData']['linescore']['currentPeriod'] == 5:
outcome.append(1)
else:
outcome.append(0)
if pbp_dict['liveData']['linescore']['currentPeriod'] == 4:
try:
game_end_time = pbp_dict['liveData']['plays']['currentPlay']['about']['periodTime'].split(':')
seconds = int(game_end_time[0]) * 60 + int(game_end_time[1])
outcome.append(seconds)
except KeyError:
loggin.exception('Error in NHL pbp')
outcome.append(0)
elif pbp_dict['liveData']['linescore']['currentPeriod'] == 5:
outcome.append(300)
else:
outcome.append(0)
# seconds_in_ot
if outcome[6] > outcome[9]:
outcome.append(1)
else:
outcome.append(0)
df = pd.DataFrame(outcome)
df = df.transpose()
df.columns = ["game_id", "game_type", "season", "game_date",
"home_team_id", "home_team", "home_abbrev",
"home_score", "away_team_id", "away_team",
"away_abbrev", "away_score", "ot_flag",
"shootout_flag", "seconds_in_ot",
"home_win"]
pp(df)
df.to_csv('TEST_OUTCOME.csv')