【问题标题】:Normalizing a Python list to get JSON data into a Tables规范化 Python 列表以将 JSON 数据放入表中
【发布时间】:2019-03-20 08:25:57
【问题描述】:

我正在尝试使用以下 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 提取到表格中,我有什么想法吗?即:

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

谢谢。

【问题讨论】:

    标签: python json pandas api


    【解决方案1】:

    看起来主要问题是这是一本深度词典。一些检查表明,这段代码可以让你找到每个玩家:

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

    但是,player 中的一些键对应更多的字典。因此,您要么必须决定哪些播放器字段是基本值(如字符串/整数/等)并保留它们,要么添加更多代码来解析额外的字典。

    但是这段代码会让你找到每个玩家,然后你可以从那里规范你想要的方式。

    如果您需要帮助,请告诉我!

    【讨论】:

      猜你喜欢
      • 2020-12-11
      • 1970-01-01
      • 2015-01-03
      • 1970-01-01
      • 2021-10-18
      • 2021-11-06
      • 2021-10-09
      • 2020-12-13
      • 1970-01-01
      相关资源
      最近更新 更多