【问题标题】:Unable to extract nested JSON and put into Pandas Data Frame无法提取嵌套 JSON 并放入 Pandas 数据框
【发布时间】:2015-12-28 23:02:04
【问题描述】:

我有一个 JSON 文件,正在尝试提取所有团队的列表。我可以通过一次迭代来完成,但是当它嵌套在多个级别时,我什么也做不了。在这种情况下,我试图将玩家提取到数据框中并将其写入 json。代码如下。从 JSON 开始。谢谢!

{
"teams": [{
    "coach": "Cowher",
    "players": [{
        "player": "Simms",
        "number": 11
    }, {
        "player": "Bradshaw",
        "number": 12

    }, {
        "player": "Elway",
        "number": 7

    }]
}]
}

这是我的 Python 脚本。

response = urllib.urlopen(url)
data = json.loads(response.read())
df = items_data = pd.DataFrame**(data['teams']['players'])**

我知道最后一行是错误所在,这是一个系列。我如何获得所有玩家。一旦我得到这个,我就可以把它写到 csv 中。任何帮助将不胜感激!

【问题讨论】:

    标签: python json pandas dataframe


    【解决方案1】:

    这里没有真正的问题,但我假设您想知道错误发生的原因。

    data["teams"]list,正如您在输入 JSON 的第 2 行中看到的(左方括号)。 所以some_list["players"] 没有意义并引发TypeError: list indices must be integers or slices, not str 因为列表只能由整数索引。

    您可以获取特定球队的所有球员: data["teams"][n]["players"] 其中n 表示第n 个团队。

    或者你可以得到所有球队的所有球员: [teams["players"] for team in data["teams"]]

    编辑:

    如果你想摆脱嵌套,你可以使用: [player for team in data["teams"] for player in team["players"]]

    注意:使用生成器表达式可能会更快,具体取决于 pandas 的工作方式。

    【讨论】:

    • 我的问题是如何获取所有玩家,以便将玩家列表写入数据框并最终写入 CSV。当它只嵌套在一层时我没有问题,但是当它像当前示例一样嵌套两层时却无法获得。
    • 谢谢。非常有帮助!
    猜你喜欢
    • 2016-03-09
    • 2018-07-23
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 2021-06-24
    相关资源
    最近更新 更多