我无法正确读取这个特定的Json文件作为Pandas Dataframe。我已经对其他JSON示例使用了类似的代码 - 这完全有效,但我需要一些帮助来理解这里可能出错的地方。
无法直接读取嵌套的“traits”并引发错误。实际表格如下:
import json
import pandas as pd
from pandas.io.json import json_normalize
with open("./assessment/0144209a-32ee-4114-bc69-9912dd3dde5c.json") as f:
d = json.load(f)
df = json_normalize(d['results'])
df.head(10)
works_data = json_normalize(data=data['results'], record_path='traits')
works_data.head()
----------------------------------------------- ---------------------------- KeyError Traceback(最近一次调用 最后)in() ----> 1 works_data = json_normalize(data = data ['results'],record_path ='traits') 2 works_data.head()
C:\ ProgramData \ Anaconda3 \ lib中\站点包\大熊猫\ IO \ JSON \ normalize.py 在json_normalize(data,record_path,meta,meta_prefix,record_prefix, 错误,sep) 257条记录。扩展(recs) 258 - > 259 _recursive_extract(data,record_path,{},level = 0) 260 261 result = DataFrame(records)
C:\ ProgramData \ Anaconda3 \ lib中\站点包\大熊猫\ IO \ JSON \ normalize.py in _recursive_extract(data,path,seen_meta,level) 233其他: 234 for obj in data: - > 235 recs = _pull_field(obj,path [0]) 236 237#稍后重复元数据
C:\ ProgramData \ Anaconda3 \ lib中\站点包\大熊猫\ IO \ JSON \ normalize.py 在_pull_field(js,spec) 180结果=结果[字段] 181其他: - > 182结果=结果[spec] 183 184返回结果
KeyError:'traits'
答案 0 :(得分:1)
在变量名中看起来像一个小的语法错误。您在第11行中包含了 数据 而不是 d 。 切换以下内容:
data=data['results']
对此:
data=d['results']