【问题标题】:Normalize nested json with varying keys使用不同的键规范化嵌套的 json
【发布时间】:2021-08-02 02:04:55
【问题描述】:

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

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

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

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

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

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

非常感谢任何帮助!

【问题讨论】:

标签: python json pandas dataframe normalize


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2018-04-09
    • 2021-07-23
    • 2019-12-22
    • 2020-06-21
    • 1970-01-01
    • 2017-10-27
    • 2020-11-09
    • 1970-01-01
    • 2018-12-07
    相关资源
    最近更新 更多