用pandas将JSON转换为数据帧

2024-04-26 15:12:24 发布

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

我试图获取一个数据帧,但根据在中指定的参数,会不断出现各种错误消息读取.json在我指定我的文件之后。你知道吗

我已经看完了书中的许多论点pandas.readïjson文档,但尚未找到解决方案。你知道吗

import pandas
json_file = "https://gis.fema.gov/arcgis/rest/services/NSS/OpenShelters/MapServer/0/query?where=1%3D1&outFields=*&returnGeometry=false&outSR=4326&f=json"
pandas.read_json(json_file)

我试图获取一个数据帧,但根据在中指定的参数,会不断出现各种错误消息读取.json在我指定我的文件之后。你知道吗


Tags: 文件数据文档httpsimportjson消息pandas
1条回答
网友
1楼 · 发布于 2024-04-26 15:12:24

因为JSON不能直接转换为DataFrameread_json只适用于^{} parameter定义的一些格式。您的JSON没有遵循任何允许的格式,因此您需要在将JSON转换为数据帧之前对其进行操作。你知道吗

让我们从较高的层次来看一下您的JSON:

{
    "displayFieldName": ...,
    "fieldAliases": {...},
    "fields": {...},
    "features": [...]
}

我来猜一猜,假设features节点就是你想要的。让我们深入到features

"features": [
    {
        "attributes": {
            "OBJECTID": 1,
            "SHELTER_ID": 223259,
            ...
        }
    },
    {
        "attributes": {
            "OBJECTID": 2,
            "SHELTER_ID": 223331,
            ...
        }
    },
    ...
]

features包含对象列表,每个对象都有一个attributes节点。attributes节点中包含的数据是您实际需要的。你知道吗

这是密码

import pandas as pd
import json
from urllib.request import urlopen

json_file = "https://gis.fema.gov/arcgis/rest/services/NSS/OpenShelters/MapServer/0/query?where=1%3D1&outFields=*&returnGeometry=false&outSR=4326&f=json"
data = urlopen(json_file).read()
raw_json = json.loads(data)
formatted_json = [feature['attributes'] for feature in raw_json['features']]

formatted_json现在是包含我们要查找的数据的字典列表。它不再是JSON了。要创建数据帧:

df = pd.DataFrame(formatted_json)

相关问题 更多 >