需要将JSON加载到DataFram中

2024-06-16 13:33:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个JSON字符串,如下所示:

b'[{"status_verify":"0","dejatime_firstpaint":"0","fullip":"104.25.229.34","ctl_devlog":"69-131041194","resptime_fullpage":"0","dt_status":"2018-11-25 00:00:21","notified":"0","resptime_connect":"0.08799999952316284","http_resp_length":"0","resptime_firstbyte":"0.6819999814033508","obj_location":"31","max_fullpage_status":"-1","resptime_dns":"0","dejatime_pageload":"0","status":"0","resptime_redirect":"0","capture_exists":"0","resptime_content":"0.08799999952316284","rs_has_dejatime":"0","obj_cust":"117396","obj_device":"470630","childnodes":"0","deja_branched":"0","http_status":"HTTP 200 OK","info_msg":null,"device_descrip":"Get Public Datasets","dejatime_domload":"0","user_experience":"0","location_descrip":"San Francisco, California","dejatime_afttime":"0","resptime":"0.8579999804496765","obj_devlog":"152050515","test_cnt":"0","status_warning":"0"},{"status_verify":"0"

etc, etc, etc.

我试着挑选一些字段,并将它们加载到数据帧中,或者将所有内容加载到数据帧中。问题是,这些都是嵌套的,我不知道如何从这个庞大的字符串中获得实际的字段名

我试过这个:

loaded_json = json.loads(json_data)
for x in loaded_json:
    print("%s: %d" % (x, loaded_json[x]))

得到这个结果:TypeError: list indices must be integers or slices, not dict。我猜这应该是相当直接的,但我不知道如何继续,即使在谷歌搜索了一段时间的解决方案


Tags: 字符串jsonobjhttpdevicestatusetclocation
2条回答

这是因为你的顶层元素是一个列表,你需要从列表中读取,而不是从dict

import json

x = b'[{"status_verify":"0","dejatime_firstpaint":"0","fullip":"104.25.229.34","ctl_devlog":"69-131041194","resptime_fullpage":"0","dt_status":"2018-11-25 00:00:21","notified":"0","resptime_connect":"0.08799999952316284","http_resp_length":"0","resptime_firstbyte":"0.6819999814033508","obj_location":"31","max_fullpage_status":"-1","resptime_dns":"0","dejatime_pageload":"0","status":"0","resptime_redirect":"0","capture_exists":"0","resptime_content":"0.08799999952316284","rs_has_dejatime":"0","obj_cust":"117396","obj_device":"470630","childnodes":"0","deja_branched":"0","http_status":"HTTP 200 OK","info_msg":null,"device_descrip":"Get Public Datasets","dejatime_domload":"0","user_experience":"0","location_descrip":"San Francisco, California","dejatime_afttime":"0","resptime":"0.8579999804496765","obj_devlog":"152050515","test_cnt":"0","status_warning":"0"}]'


y = json.loads(x)
print(y[0]['status_verify'])

# output,
0

一行加载数据,然后在数据帧中放入一些字段,应该是这样的:

df = pd.DataFrame(json.loads(x), columns=['status_verify', 'fullip', 'ctl_devlog'])

祝你的项目好运

相关问题 更多 >