无法提取嵌套的JSON并放入Pandas Data Frame

时间:2015-12-28 23:02:05

标签: python json pandas dataframe

我有一个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。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

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

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的工作方式。