Python json_normalize失败,json中的值为空

Python json_normalize失败,json中的值为空,python,json,python-3.x,pandas,Python,Json,Python 3.x,Pandas,我从外部Web服务获得了以下json: text=""" [{ "id":"1", "name" : "abc", "address":{ "flat":"123", "city":"paris", "street":null }, "error":null }] 现在

我从外部Web服务获得了以下json:

text="""
     [{
        "id":"1",
         "name" : "abc",
         "address":{
                    "flat":"123",
                    "city":"paris",
                    "street":null
         },
         "error":null
     }]
现在我想从这个json创建dataframe。当我在下面尝试时:

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

resp_json = json.loads(text)
response = json_normalize(resp_json)
但这给了我以下的错误:

响应时出错=json\u normalize(resp\u json) KeyError:“street”

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

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

text = text.replace('"street":null','"street":""')
注意:-当我使用python verion 3.6.3::Anaconda Inc.和pandas版本0.20.3时,我没有看到这个问题,json_normalize能够正常工作。这是我的本地机器设置


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

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

我正在运行pandas'0.23.0',我可以重现相同的错误。 您可以在github讨论线程中看到,当嵌套级别上出现大于0的null值时,由于条件case而产生错误。大约在两个月前,它似乎已被更改,两周前似乎已进入0.23.0版本:

除了等待新版本或降级您的生产环境(这不是一个好主意,因为它很可能会破坏一切),您可以考虑如何在您的环境中处理多个包版本。除非您创建不同的虚拟环境,否则Pip无法做到这一点,我相信康达也是如此。如果你真的需要加载这样的文件,你可以做的是通过从git克隆“0.22.0”包作为一个本地模块来加载它,作为一个临时的、黑客式的解决方案——只是加载你的dict。但是当你加载0.22.0并尝试使用0.23.0时,可能会出现一些dataframe API不一致的情况

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


愉快的黑客攻击。

Python 3.4和pandas 0.20.1-没问题,代码可以正常工作。是的,我的本地配置也可以工作,如前所述,但它不能在生产中使用配置machine@SCoder查看文档后,它似乎是pandas 0.23.0中的一个bug