2

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

到目前为止,我已经使用这条线来获得我想要的数据框:

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

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

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

或者,有没有办法找出密钥不同的项目并区别对待?由于我们谈论的是带有部分 800-1000 项的转储,其中包含长 json,我认为我实际上不能手动通过它们来找到不适合的转储......

非常感谢任何帮助!

4

1 回答 1

1

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

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

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

于 2021-05-11T18:03:23.430 回答