ValueError:列表不匹配Python

时间:2018-10-05 03:28:29

标签: python pandas

将我的列表以正确的顺序添加到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')

0 个答案:

没有答案