[英]pandas json_normalize KeyError
我有一个没有统一结构的嵌套 json 文件,如下例所示:
[{ "name": "Jon", "last": "Jonny"},
{"name": "Jimmy", "last": "johnson", "kids":[{"kidName":"johnson_junior","kidAge": "1"}, {"kidName":"johnson_junior2", "kidAge": "4"}]}]
看到在第二项中有第一项中不存在的列表名称“kids”。
当我尝试用 pandas json_normalize 扁平化 json 时抛出错误消息:“KeyError:'kids'”
这是 json_normalize 命令:
flat_json = json_normalize(json_file, record_path= 'kids', errors='ignore')
json_normalize 似乎不支持没有统一结构的嵌套 json。
有人遇到过同样的问题吗? 你知道如何度过难关吗?
如果不是很麻烦,只要该键不存在,我就会添加'kids':[{'kidName':None,'kidAge':None}]
。
errors='ignore'
用于meta
中列出的键(请参阅docu ),而您对kids
指定的是记录路径。
我不知道您是否在寻求一般性建议,如“如果记录路径密钥有时不可用会发生什么?”,但以防万一您提供的数据示例是您当前的问题,这就是我建议的快速修复.
这样的事情有效:
data = {"name": "Jimmy", "last": "johnson", "kids":[{"kidName":"johnson_junior","kidAge": "1"}, {"kidName":"johnson_junior2", "kidAge": "4"}]}]
# then you inform with empty kids if looping doesn't alter your desired flow that much
[elem.update({'kids':[{'kidName':None,'kidAge':None}]}) for elem in data if 'kids' not in elem.keys()]
# finally you normalize
flat_json = json_normalize(data,'kids', ['name','last'])
输出:
kidAge kidName name last
0 None None Jon Jonny
1 1 johnson_junior Jimmy johnson
2 4 johnson_junior2 Jimmy johnson
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.