python - Json_normalize 逐个字符地给出结果
问题描述
我目前正在尝试使用 pandas 规范化一个 json 文件,但在处理它时遇到了问题。
json 文件如下所示:
{ "valid": false,
"checks": {"bank_check": {"valid": true, "reasons": {}, "last_checked_at": "2019-02-19", "first_checked_at": "2019-02-01"},
"company_check": {"valid": true, "reasons": {}, "last_checked_at": "2019-02-19", "first_checked_at": "2019-02-01"},
"ceo_check": {"valid": true, "reasons": {}, "last_checked_at": "2019-02-19", "first_checked_at": "2019-02-01"}}
我有兴趣在这样的表中获取支票列表:
| bank_check | company_check | ceo_check|
------------------------------------------
| true | true | true |
但是当我使用 json_normalize 我得到这个:
如果我使用works_data=json_normalize(d[1], record_path=['result', 'checks'])
,我得到错误string indices must be integers
。
以前有人遇到过这种情况吗?或者你知道为什么我会得到这个奇怪的结果吗?
预先感谢您的回复。
解决方案
不知道为什么会出现这个问题(请注意示例中的 json 缺少 close }
)。不过,我尝试自己对其进行规范化,并能够产生您想要的输出:
from pandas.io.json import json_normalize
d = { "valid": 'false',
"checks": {"bank_check": {"valid": 'true', "reasons": {}, "last_checked_at": "2019-02-19", "first_checked_at": "2019-02-01"},
"company_check": {"valid": 'true', "reasons": {}, "last_checked_at": "2019-02-19", "first_checked_at": "2019-02-01"},
"ceo_check": {"valid": 'true', "reasons": {}, "last_checked_at": "2019-02-19", "first_checked_at": "2019-02-01"}}}
df = json_normalize(d['checks'])
cols = [ col for col in list(df.columns) if 'valid' in col ]
works_data = df[cols]
输出:
print (works_data)
bank_check.valid ceo_check.valid company_check.valid
0 true true true
推荐阅读
- javascript - Codesandbox.io 引发了跨域错误
- python - 使用 BeautifulSoup 4(lxml 解析器),如何从标签中提取内部 HTML(decode_contents 不起作用)?
- c# - 从文本文件中读取字符串
- html - 如果满足条件,则修复复选框的颜色
- linux - 在 Linux 中将小时添加到日期和时间
- html - 如何在提交之前向用户输入添加验证
- python - Django ImageField(图像不显示)
- python - 当虚拟环境处于活动状态时,Windows“Python 启动器”未检测到某些 shebangs 的 python3
- sql - 在oracle sql中减去时间
- php - 使用 laravel 6.0 从数据库中删除信息并且函数 destroy 不起作用