使用不同的键标准化嵌套的 json

问题描述

我通过 API 为不同的项目获取了非常嵌套的 json,然后我尝试将一些接收到的信息转换为数据帧。

到目前为止,我已经使用这一行来获取我想要的数据框:

df = pd.json_normalize(result,Meta=['properties'],record_path=['view','item','fields','field'])

这有时有效,但有时我会收到元键或记录路径本身的 KeyError (KeyError: 'view')。我认为这是因为我收到的 json 并不总是完全相同,但会根据所请求信息的项目类型而有所不同。

我现在的问题是,是否有办法跳过没有这些键的数据?或者是否还有其他选项可以忽略不包含这些键的数据?

或者,有没有办法找出哪些项目的键不同并区别对待?由于我们谈论的是带有长 json 的部分 800-1000 个项目的转储,我认为我实际上无法手动查看它们以找到不适合的那些...

非常感谢任何帮助!

解决方法

快速而肮脏的解决方案是使用 errors='ignore' 选项:

df = pd.json_normalize(result,meta=['properties'],record_path=['view','item','fields','field'],errors='ignore')

如果您还想提取具有不同结构的条目(导致错误的条目),那么最好的办法是将它们从 result 对象中过滤掉,然后运行 ​​{{1} } 再次指定适当的 pd.json_normalize