【发布时间】:2018-11-11 16:52:12
【问题描述】:
我有以下从外部网络服务获得的 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'
我相信它是因为 street 属性的值为 null,这就是它抛出此错误的原因。如何解决?
如果我喜欢下面,我能够解决,但理想情况下它不是正确的解决方案
text = text.replace('"street":null','"street":""')
注意: - 当我使用 python 版本 3.6.3 :: Anaconda Inc. 和 pandas 版本 0.20.3 时,我没有看到这个问题并且 json_normalize 能够正常工作。这是我的本地机器设置。
在生产机器上,我们有 - Python - 3.5.1 和 pandas 0.23.0。我们遇到了上述问题。
【问题讨论】:
-
Python 3.4 和 pandas 0.20.1 - 没问题,代码可以正常工作。
-
是的,我在问题中提到的本地配置也可以,但它不适用于生产机器中的配置
-
@SCoder 查看文档后,似乎是 pandas 0.23.0 中的一个错误
标签: python json python-3.x pandas