gpt4 book ai didi

python - Pandas json_normalize KeyError

转载 作者:行者123 更新时间:2023-12-05 04:06:59 30 4
gpt4 key购买 nike

我有一个没有统一结构的嵌套 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。

有人遇到过同样的问题吗?你知道如何度过难关吗?

最佳答案

如果不是很麻烦,我会在该 key 不存在时添加 'kids':[{'kidName':None,'kidAge':None}]

errors='ignore' 用于 meta 中列出的键(参见 docu ),而您使用 kids 指定的是记录路径

我不知道您是否在寻求一般性建议,如“如果记录路径 key 有时不可用会发生什么?”,但以防万一您提供的数据示例是您当前的问题,这是快速解决方法我会提议。

类似这样的东西:

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

关于python - Pandas json_normalize KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49218324/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com