亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Python 從 JSON 嵌套列表和字符串數組中提取值

使用 Python 從 JSON 嵌套列表和字符串數組中提取值

慕婉清6462132 2023-03-16 17:05:34
我正在嘗試從 JSON 數據集中從馬薩諸塞州波士頓的多個社區中提取坐標,但我一直在嘗試獲取每個城市的第一個坐標對;下面是 Roslindale 坐標的縮小版。"features": [{    "type": "Feature",    "properties": {      "Name": "Roslindale",      "Acres": 1605.5682375,      "SqMiles": 2.51,    },    "geometry": {      "type": "MultiPolygon",      "coordinates": [        [          [            [              -71.125927174853857,              42.272013107957406            ],            [              -71.125927174853857,              42.272013107957406            ]          ]        ],        [          [            [              -71.125830766767592,              42.272212845889705            ],            [              -71.125830766767592,              42.272212845889705            ]          ]        ],        [          [            [              -71.125767203228904,              42.272315958536389            ],            [              -71.125767203228904,              42.272315958536389            ]          ]        ]      ]    }  },現在我已經提取了我想要使用的數據for data in boston_neighborhoods:    neighborhood_name = data['properties']['Name']    neighborhood_id = data['properties']['Neighborhood_ID']    neighborhood_size = data['properties']['SqMiles']    neighborhood_latlon = data['geometry']['coordinates']    neighborhood_lat = neighborhood_latlon    neighborhood_lon = neighborhood_latlon    neighborhoods = neighborhoods.append({'Neighborhood': neighborhood_name,                                          'Neighborhood_ID': neighborhood_id,                                          'SqMiles': neighborhood_size,                                          'Latitude': neighborhood_lat,                                          'Longitude': neighborhood_lon}, ignore_index=True)這將返回多個坐標對,但我只想要第一對,下面是我現在返回的示例輸出:Latitude                   |           Longitude     --------------------------------------------------------[[[[-71.12592717485386,    |    [[[[-71.12592717485386, 42.272013107957406], [...  |    42.272013107957406], [...    
查看完整描述

1 回答

?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

可能有點矯枉過正,但是JMESPath查詢嵌套的 JSON 結構真的很容易。

向下遍歷文檔,您首先需要獲取數組 ( [*]) 中的每個元素,然后為每個元素選擇項目并將其放入一個對象(Python 字典)中。您將選擇下方的社區properties,然后選擇Nameproperties.Name)。您對類似的嵌套屬性執行相同的操作。

坐標位于其下geometry.coordinates,是坐標對數組的數組。

import jmespath

import pandas as pd


query = """

[*].{ 

    Neighborhood: properties.Name,

    Neighborhood_ID: properties.Neighborhood_ID, 

    SqMiles: properties.SqMiles, 

    Latitude: geometry.coordinates[0][0][0][0], 

    Longitude: geometry.coordinates[0][0][0][1] 

}

"""


compiled = jmespath.compile(query)

result = compiled.search(boston_neighborhoods)


df = pd.DataFrame.from_records(result)

#   Neighborhood Neighborhood_ID  SqMiles   Latitude  Longitude

# 0   Roslindale            None     2.51 -71.125927  42.272013


查看完整回答
反對 回復 2023-03-16
  • 1 回答
  • 0 關注
  • 244 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號