Python 根据用户输入从GeoJSON提取数据并写入pandas data.frame

Python 根据用户输入从GeoJSON提取数据并写入pandas data.frame,python,json,pandas,dataframe,geojson,Python,Json,Pandas,Dataframe,Geojson,我有一个大的GeoJSON文件(100k+嵌套字典)。这是GeoJSON的布局: [ { "type": "Feature", "properties": { "OBJECTID": 2625, "id": "ZWL_4983539", "label": "PZ005", "timestamp_from": "2018-06-16T13:00:00.000Z", "timestamp_to": "20

我有一个大的GeoJSON文件(100k+嵌套字典)。这是GeoJSON的布局:

[
{
    "type": "Feature",
    "properties": {
        "OBJECTID": 2625,
        "id": "ZWL_4983539",
        "label": "PZ005",
        "timestamp_from": "2018-06-16T13:00:00.000Z",
        "timestamp_to": "2018-06-16T14:00:00.000Z",
        "value_NO2": 14.48,
        "unit_NO2": "ug/m3",
        "value_PM10": 29.07,
        "unit_PM10": "ug/m3",
        "value_RH": 39.64,
        "unit_RH": "%",
        "value_P": 1014,
        "unit_P": "hPa"
    },
    "geometry": {
        "type": "Point",
        "coordinates": [
            6.0624,
            52.54120000000001,
            0
        ]
    }
},
{
    "type": "Feature",
    "properties": {
        "OBJECTID": 2626,
        "id": "ZWL_4983451",
        "label": "PZ006",
        "timestamp_from": "2018-06-16T14:00:00.000Z",
        "timestamp_to": "2018-06-16T15:00:00.000Z",
        "value_NO2": 23.1,
        "unit_NO2": "ug/m3",
        "value_PM10": 21.27,
        "unit_PM10": "ug/m3",
        "value_RH": 35.21,
        "unit_RH": "%",
        "value_P": 1014,
        "unit_P": "hPa"
    },
    "geometry": {
        "type": "Point",
        "coordinates": [
            6.055100000000001,
            52.53820000000002,
            0
        ]
    }
}]
完整的GeoJSON可通过以下方式访问:

response = requests.get('https://opendata.arcgis.com/datasets/97d710812a4a49369bd064b5be69fcd4_0.geojson')
js = json.loads(response.text)
我想定义一个函数,从GeoJSON中提取数据子集并将其写入数据帧。功能输入应为传感器标签、时间段(从到)和所需值(PM10、NO2等):

该功能的工作方式应确保以下输入:

jsonToDataFrame(PZ001, 2018-06-16T14:00:00.000Z, 2018-06-16T19:00:00.000Z, Value_PM10)
返回以下数据帧:


我一直在努力获取所需的数据帧。有人知道如何解决这个问题吗?

您可以使用
Geopandas
中的
GeoDataFrame
而不是Pandas数据框。您可以立即将geojson加载到GeoDataFrame中,该GeoDataFrame具有与Pandas dataframe相同的结构和功能

import geopandas as gpd

path_to_geojson = "path/to/geojson"

df = gpd.read_file(path_to_geojson)

您可以尝试使用以迭代的方式从JSON数据中只加载您需要的内容,并以较低的内存消耗过滤您实际需要的内容。然后,您可以将结果转换为数据框。

感谢您的快速响应。这确实是一个容易得多的解决办法。但是,由于geojson的大小,我尽量避免将其直接加载到geodataframe。这需要一段时间来处理
import geopandas as gpd

path_to_geojson = "path/to/geojson"

df = gpd.read_file(path_to_geojson)