Pandas json_normalize 因 JSON 中的空值而失败

2024-04-02

我有以下从外部网络服务获得的 json :

text="""
     [{
        "id":"1",
         "name" : "abc",
         "address":{
                    "flat":"123",
                    "city":"paris",
                    "street":null
         },
         "error":null
     }]

现在我想从这个 json 创建数据框。当我尝试下面时:

from pandas.io.json import json_normalize
import json
import pandas as pd

resp_json = json.loads(text)
response = json_normalize(resp_json)

但这给了我以下错误:

Error at response = json_normalize(resp_json) KeyError : 'street'

我相信这是因为街道属性的值为空,这就是它抛出此错误的原因。如何解决这个问题?

如果我确实喜欢下面的内容,我可以解决,但理想情况下这不是正确的解决方案

text = text.replace('"street":null','"street":""')

NOTE:- 当我使用 python 版本 3.6.3 :: Anaconda Inc. 和 pandas 版本 0.20.3 时,我没有看到这个问题,并且 json_normalize 能够正常工作。这是我的本地机器设置。

在生产机器上,我们有 - Python - 3.5.1 和 pandas 0.23.0。在那里我们遇到了上述问题。


这似乎是最新版本的 pandas 中的一个错误:

https://github.com/pandas-dev/pandas/issues/21158 https://github.com/pandas-dev/pandas/issues/21158

我正在运行 pandas '0.23.0' 并且可以重现相同的错误。 您可以在 github 讨论线程中看到,由于条件情况而出现错误null值出现在大于 0 的嵌套级别上。它似乎在大约两个月前发生了变化,似乎已在两周前进入 0.23.0 版本:

https://github.com/pandas-dev/pandas/commit/01882ba5b4c21b0caf2e6b9279fb01967aa5d650#diff-9c654764f5f21c8e9d58d9ebf14de86d https://github.com/pandas-dev/pandas/commit/01882ba5b4c21b0caf2e6b9279fb01967aa5d650#diff-9c654764f5f21c8e9d58d9ebf14de86d

除了等待新版本或降级生产环境(这不是一个好主意,因为它很可能会破坏东西)之外,您还可以考虑如何处理环境中的多个软件包版本。 Pip 无法做到这一点,除非您创建不同的虚拟环境,我相信 conda 也不能。如果您确实需要加载这样的文件,您可以做的就是通过从 git 克隆它作为临时的、hacky 解决方案来加载“0.22.0”包作为本地模块 - 只是为了加载您的字典。但是,当您加载 0.22.0 并尝试将其与 0.23.0 一起使用时,可能会出现一些数据帧 API 不一致的情况。

毕竟,您的转换字符串的解决方案可能并没有那么糟糕。

快乐黑客。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pandas json_normalize 因 JSON 中的空值而失败 的相关文章

  • BeautifulSoup 不适用于某些网站

    我有这个脚本 import urrlib2 from bs4 import BeautifulSoup url http www shoptop ru page urllib2 urlopen url read soup Beautiful
  • 如果新文件不存在则写入新文件,如果存在则追加到文件

    我有一个程序可以写入用户的highscore到一个文本文件 该文件由用户选择时命名playername 如果具有该特定用户名的文件已经存在 那么程序应该附加到该文件 以便您可以看到多个highscore 如果具有该用户名的文件不存在 例如
  • 如何在 pySpark 数据框中添加行 ID [重复]

    这个问题在这里已经有答案了 我有一个 csv 文件 我在 pyspark 中将其转换为 DataFrame df 经过一番改造后 我想在 df 中添加一列 这应该是简单的行 ID 从 0 或 1 开始到 N 我将 df 转换为 rdd 并使
  • 检查对象是否是字符串列表的列表?

    是什么elegant检查对象是否是字符串列表列表的方法 没有嵌套循环 也许这里必须是构造结构化迭代的常规方法 UPD 像这样的东西 l a b c d 1 3 e 2 f def recurse iterable levels result
  • 如何计算具有较大中间值的总和

    我想计算 for n m两个值都是 1000 以内的整数 最终结果是一个不大于 1000 的数字n但中间值对于 python 来说太大了 无法处理 你怎么解决这个问题 我将函数定义如下 from scipy misc import comb
  • python请求:重试直到收到有效响应

    我想知道是否存在重试请求一定次数的常见模式 可能由于服务器错误或网络不良而失败 我想出了这个 并且我愿意在那里找到更好的实现 cnt 0 while cnt lt 3 try response requests get uri if res
  • 如何让MagicMock返回多个值

    我想模拟一个图书馆 matplotlib对于它的价值 并且遇到一个问题 当调用模拟并期望返回元组时 它会失败 有一个更好的方法吗 Python 3 7 2 default Jan 13 2019 12 50 15 Clang 10 0 0
  • ctypes.ArgumentError:不知道如何转换参数

    我在C库中定义了一个函数 如下所示 int Test char str1 int id1 char str2 float val float ls 我想在Python中使用它 所以我编写了以下Python代码 str1 a str2 b i
  • 如何在Python模拟中调用模拟方法

    我想创建一个模拟方法来调用被模拟的底层方法 我正在想象类似以下的内容 但我找不到任何有关模拟对象的文档 该对象包含对被模拟对象的引用 我将其表示为 wrapped method foo below from mock import patc
  • 如何在 PySide/PyQt 中制作一个位于屏幕中央的小部件?

    这段代码有效 但我想知道是否有更简单的方法 def center self qr self frameGeometry cp gui QDesktopWidget availableGeometry center qr moveCenter
  • python 中使用 scipy 截断正态分布

    我正在尝试使用截断正态分布scipy在Python3 我想做一些简单的事情 绘制以 0 5 为中心 范围从 0 到 1 的截断法线的 pdf 我有以下代码行 from scipy import truncnorm import matplo
  • Android AsyncTask 第二次调用时未执行

    我有一个扩展 AsyncTask 的类 public class SendJSONArray2Server extends AsyncTask
  • 如何使用 Python Flask-Security 使用 bcrypt 加密密码?

    我正在尝试使用 Flask Security 文档中的标准基本示例 并使其正常工作 除了密码以明文形式存储之外 我知道这一行 user datastore create user email email protected cdn cgi
  • Django:上传前调整图像大小

    我想调整图像大小 Pillow 在上传之前 我在下面编写了代码但不起作用 并得到错误 myapp list 处的属性错误 坚定的 请求方式 POST 请求网址 http 127 0 0 1 8000 myapp list http 127
  • 使用 JSON 传递 HTML

    我正在使用 JSON 将数据传递到 iPhone 和 iPad 数据的一个字段是 HTML 问题是编码 这是我得到的回复 gt GadgetHTML strong Hello strong gt from Catworld br n img
  • serde_json::from_str 错误,其中字符串来自文件

    extern crate serde json use serde json Value use std fs File use std io prelude fn main let filepath map test anhui txt
  • Anaconda (Python) - Windows 10 上的 Cmder 集成

    我在 Windows 10 64 位上通过 Anaconda 让 Cmder 使用 Python 时遇到了一些麻烦 我让 Anaconda 工作得很好 测试过用 matplotlib 绘制一些东西 它与 Anaconda Prompt 一起
  • 纯Python库读写jpeg格式

    伙计们 我正在寻找 jpeg 写入 阅读会很好 但不是必需的 库的纯 python 实现 我只在以下位置创建了 TonyJPEG 库端口 http mail python org pipermail image sig 2004 Novem
  • FileAllowed 不显示错误消息

    我正在使用 WTForms 我正在对文件上传应用验证 并将其限制为仅 jpg png 和 pdf 格式 但是 如果我输入不正确 则不会出现错误消息 我按照这个教程https flask wtf readthedocs io en stabl
  • 带有 graphviz_layout 的水平树

    在Python中 使用networkx 我可以用以下方法绘制垂直树 g nx balanced tree 2 4 pos nx graphviz layout g prog dot nx draw g pos labels b all no

随机推荐

  • 使用 INotifyPropertyChanged 的​​静态属性。 C#

    我正在尝试创建一个静态属性 其中INotifyPropertyChanged将更新对 a 所做的任何更改DataGrid ComboBox我有约束力 我收到这个错误 错误 CS0026 关键字 this 在静态属性 静态中无效 方法或静态字
  • 当 Angular 2 中的一个文件中有两个类、一个装饰器/一类两个装饰器时会发生什么?

    Component selector my cmp template div Hello World div here component metadata export class MyComponent 所以 上面是我实际的组件文件 如
  • 具有空值的 MongoDb 查询数组

    我的收藏中有一些看起来像这样的物品 MyArray null some value null 我想查询那些具有空值作为数组元素的对象 查询 db collection find MyArray null 不起作用 它似乎只找到 MyArra
  • 在 emacs 中创建别名?

    我有一个 emacs 副本 可以从拇指驱动器在几台不同的 Windows 计算机上使用 我想知道是否可以在 emacs 中创建类似于 bash 别名或符号链接的东西 我可以在 find file 中使用的东西是我正在寻找的主要内容 例如 C
  • Django 开发服务器错误:找不到图像

    尝试运行 Django 开发服务器时出现以下错误 我使用的是 OS X 10 8 我还使用 virtualenv 系统安装包 django env Glyns iMac Ares Glyn sudo python manage py run
  • pycurl 相当于“curl --data-binary”

    我想知道 pycurl 中这个curl命令的等效项 curl data binary binary data file bin http server myapp method 注意 上面的curl语句使用了POST方法 我需要使用它来与我
  • 无法加载参考程序集以供执行

    突然我的网站无法加载并给出以下错误 我在 Windows 10 Home 上运行带有 Net Framework 4 7 1 的 VS2017 BadImageFormatException Cannot load a reference
  • “docker images”显示图像,“docker rmi”表示“没有这样的图像”或“引用不存在”

    由于某些原因我无法删除 docker 镜像 这是输出 操作系统版本 Linux localhost localdomain 4 12 13 300 fc26 x86 64 1 SMP Thu Sep 14 16 00 38 UTC 2017
  • django 模型中的星期几表示

    我正在构建这个 作业服务器 模型 我想添加一个字段来保存该作业将在一周中的哪几天运行 最终在用户界面中 我希望用户能够拥有一系列可以选择的复选框 每天一个 在我的模式中表示 一周中的几天 数据的最佳方式是什么 class Job model
  • 如何设置Robots.txt或Apache仅在特定时间允许爬虫?

    由于 24 小时内流量分布不均匀 我希望在高峰时段禁止爬虫 在非繁忙时段允许爬虫 有没有一种方法可以实现这一目标 编辑 感谢所有的好建议 这是我们找到的另一个解决方案 2bits com 有一篇关于设置 IPTables 防火墙以限制来自某
  • 更新 appSettings 外部 web.config 中的变量

    我需要更新 Azure TFS 中 web config 中的值 我能够获取连接字符串替换的值 该值是 appSettings 的一部分 为此 我需要启用名为 XML 变量替换的设置 在 IIS Web 部署下 但是 web config
  • 字符显示/搜索 Unicode 字符

    在回答另一个问题时question https stackoverflow com q 18686199 418556关于这些部分 我对系统上可用字体显示的 Unicode 字符可能获得的字形感到好奇 当然 典型的机器上有 65 536 个
  • 无法通过ajax将javascript对象传递给php

    我在 javascript 中创建了一个新数组 我从一个函数向其索引添加值 然后将数组传递给 ajaxCall 函数 如果我尝试将其转换为 json 并通过 ajax 将其发送到 php 文件 但是变量 json 始终为空 我已经阅读了很多
  • 恢复小备份时磁盘空间不足

    我正在尝试从 32MB 备份恢复数据库 我的磁盘上有 6GB 可用空间 当我尝试恢复备份时 它显示磁盘空间不足错误 32MB 的备份怎么可能需要超过 6GB 的磁盘空间 可能是因为备份被压缩 或者因为有一个非常大的日志文件不需要成为备份本身
  • UIScrollView - (bounces = NO) 似乎覆盖 (pagingEnabled = YES)

    我有一个带有分页功能的 UIScrollView 因此带有 UIPageControl 并在页面之间左右拖动 轻拂的典型模型 并且我的工作正常 奇怪的是 当我想摆脱弹跳 这样就看不到左右两侧UI后面的黑色 时 突然分页不再起作用了 换句话说
  • 在 Storyboard 中实现视频视图

    我想构建简单的视频应用程序 可以查看用户添加的 YouTube 链接中的视频 我没有找到 VideoView 我的意思是如果图像视图用于图像 那么 UIView 用于视频 原库中没有执行视频观看功能的对象 但你可以导入MediaPlayer
  • 如何在 Python BaseHTTPRequestHandler 中处理分块编码?

    我有以下简单的 Web 服务器 利用 Pythonhttp module import http server import hashlib class RequestHandler http server BaseHTTPRequestH
  • 为什么选择 XML 而不是属性文件来进行 Log4J 配置?

    是否有任何理由在 Log4J 配置中使用 XML 而不是属性文件 有一个有趣的讨论这篇博客中两者的优点 http www laliluna de log4j tutorial html 以下部分摘自该博客 属性可以由属性文件或 XML 文件
  • fortran 77 到 fortran 90 的转换器软件 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有 fortran 77 编码 但我想转换为 fortran 90 在哪里可以下载转换器软件 这是我帮
  • Pandas json_normalize 因 JSON 中的空值而失败

    我有以下从外部网络服务获得的 json text id 1 name abc address flat 123 city paris street null error null 现在我想从这个 json 创建数据框 当我尝试下面时 fro