我正在嘗試構建一個數據庫,其中包含玩遊戲數據的數個賽季的NBA比賽,對於我的Msc。在經濟學論文。目前,我提取NBA的API(see example)和分裂每場比賽場比賽使用this routine不同以.json文件(正式適用於PBP目的),從而產生以.json文件,(第一個玩的例子):按照特定的.json轉換NBA比賽爲.csv
{"headers": ["GAME_ID", "EVENTNUM", "EVENTMSGTYPE", "EVENTMSGACTIONTYPE", "PERIOD", "WCTIMESTRING", "PCTIMESTRING", "HOMEDESCRIPTION", "NEUTRALDESCRIPTION", "VISITORDESCRIPTION", "SCORE", "SCOREMARGIN"], "rowSet": [["0041400406", 0, 12, 0, 1, "9:11 PM", "12:00", null, null, null, null, null], ["0041400406", 1, 10, 0, 1, "9:11 PM", "12:00", "Jump Ball Mozgov vs. Green: Tip to Barnes", null, null, null, null]
我計劃在創建一個循環將所有生成的.json文件轉換爲.csv,這樣它就可以進行stata中的計量經濟學分析。目前,我陷入了這個過程的第一步:創建json到CSV轉換過程(之後我將設計循環)。我想的代碼是:
f = open('pbp_0041400406.json')
data = json.load(f)
f.close()
with open("pbp_0041400406.csv", "w") as file:
csv_file = csv.writer(file)
for rowSet in data:
csv_file.writerow(rowSet)
f.close()
然而,產生CSV文件顯示尷尬的結果:一個線讀取h,e,a,d,e,r,s
和其他閱讀r,o,w,S,e,t
,因此不會捕捉標題或行集(戲劇本身)。
我試圖解決這個問題,考慮到貢獻on this thread,但我一直無法做到這一點。任何人都可以提供一些解決這個問題的見解嗎?
[編輯]用原始代碼中的數據替換行集也取得了相同的結果。
在此先感謝!
嗨@SNygard,謝謝你的提示。我打印rowSet,它的名字沒有定義。打印數據後,原始的.json文件確實顯示在外殼上。但是,在替換原始代碼中的rowset數據之後,返回的.csv獲得與以前相同的結果。 –
考慮到示例JSON,'data'將會是一個[dict](https://docs.python.org/2/tutorial/datastructures.html#dictionaries),帶有兩個鍵'headers'和'rowSet'。因此,循環訪問行需要用於數據行['rowSet']'。 –