Нормализация списка Python для получения данных JSON в таблицы - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь использовать следующий код Python для получения информации из API и в конечном итоге создать таблицу игроков.Я получил данные, в основном нормализованные к этому уровню, но я изо всех сил пытаюсь работать со списком [реестров].

import requests
import json
import pandas as pd
from pandas.io.json import json_normalize

r1 = requests.get('https://statsapi.web.nhl.com/api/v1/teams/16?hydrate=franchise(roster(season=20182019,person(name,stats(splits=[yearByYear]))))')
data = r1.json()

df1 = json_normalize(data, 'teams',['teams.franchise'],errors='ignore')['franchise']

df2 = json_normalize(df1)['roster.roster']

df3 = pd.DataFrame(data=df2.index, columns=['Id'])
df4 = pd.DataFrame(data=df2.values, columns=['Players'])

df4

возвращает:

0   [{'person': {'id': 8470645, 'fullName': 'Corey...

Любые идеи о том, что я мог бы сделатьизвлечь каждого человека из этого API в таблицу?IE:

ID | fullName |
..   .....
..   .....

Спасибо.

1 Ответ

0 голосов
/ 16 октября 2018

Похоже, главная проблема в том, что это глубокий словарь.Некоторые проверки показали, что этот код достанет вас каждому игроку:

all_players = []
for team in data['teams']:
    for player in team['franchise']['roster']['roster']:
        player = player['person']
        print(player.keys())
        print(player)
        print()

Однако некоторые ключи в player соответствуют большему количеству словарей.Поэтому вам нужно либо решить, какие поля игрока являются базовыми значениями, такими как строки / входные / и т. Д., И оставить их, либо добавить дополнительный код для разбора дополнительных словарей.

Но этот код доставит вас каждому игроку, тогда вы можете нормализовать, как вы хотите оттуда.

Дайте мне знать, если вам нужна помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...