2015-12-28 35 views
0

我有一個JSON文件,並試圖提取所有團隊的列表。我可以通過一次迭代來完成,但是當它嵌套在多個層次上時,我無能爲力。在這種情況下,我試圖將玩家提取到數據框中並將其寫入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

這裏沒有真正的問題,但我假設你想知道錯誤發生的原因。

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"]]

注:使用生成器表達式可能會更快,這取決於大熊貓的工作方式。

+0

我的問題是,我如何獲得所有玩家,以便我可以將玩家列表寫入數據框並最終生成一個CSV。當它只嵌套在一個層次上時,我沒有問題,但是當它像當前示例一樣嵌套在兩個層次上時無法得到。 –

+0

謝謝。非常有幫助! –