ValueError: Несоответствие списка Python - PullRequest
0 голосов
/ 05 октября 2018

Возникла проблема с доставкой моего списка в 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...