Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Json_normalize提供逐字符的结果_Python_Json_Pandas - Fatal编程技术网

Python Json_normalize提供逐字符的结果

Python Json_normalize提供逐字符的结果,python,json,pandas,Python,Json,Pandas,我目前正试图用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"

我目前正试图用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_normalized[1],record_path=['result','checks',],我得到的错误字符串索引必须是整数

以前有人面对过吗?或者你知道我为什么会得到这个奇怪的结果吗


提前感谢您的回复。

不确定为什么会提出这个问题,请注意示例中的json缺少结尾}。但我自己尝试将其正常化,并能够产生您想要的输出:

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] 
输出:


谢谢你,我终于发现我做错了什么。事实上,我不是在json上进行json_规范化,而是在一个带有json和索引0的小数据帧上进行json_规范化。所以我必须去掉索引才能让它工作。谢谢你的快速回复。哦,好的。是的,这是有道理的。对于d[1],record_path=['result','checks']是如何给您一些输出的,我有点困惑。但很高兴你解决了
print (works_data)
  bank_check.valid ceo_check.valid company_check.valid
0             true            true                true