我有一个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。任何帮助将不胜感激!
答案 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的工作方式。