我正在尝试构建一个数据库,其中包含玩游戏数据的数个赛季的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']'。 –