#python #pandas #geopandas
#python #pandas #геопанды
Вопрос:
У меня есть вопрос по Geopandas.
У меня есть файл формы для страны, который я загружаю в геопанды. Файл формы имеет форму для всех штатов в country.
Мне нужно извлечь одно состояние. Я пытался изучить документацию и stackoverflow, но не смог разобраться в том, как использовать query()
метод для извлечения единого состояния.
import geopandas as gpd
import os
# get current directory path
cur_dir = os.path.dirname(os.path.realpath(__file__))
gdf_shp_state = gpd.read_file(cur_dir '/data/StateBoundary/StateBoundary.shp')
print(type(gdf_shp_state))
print(gdf_shp_state)
Вывод:
<class 'geopandas.geodataframe.GeoDataFrame'>
state geometry
0 ANDAMAN amp; NICOBAR (POLYGON ((10341718.474 1449533.160500001, 103...
1 CHANDIGARH POLYGON ((8546255.616099998 3606050.813100003,...
2 DADAR amp; NAGAR HAVELI (POLYGON ((8137193.4859 2315664.964499999, 813...
3 DAMAN amp; DIU (POLYGON ((8111624.4714 2328002.898499999, 811...
4 DELHI POLYGON ((8583390.569699999 3359116.190099999,...
5 HARYANA POLYGON ((8524318.5392 3516490.864500001, 8524...
6 JHARKHAND POLYGON ((9762288.284699999 2772949.712499999,...
Вопрос в следующем: как мне запросить фрейм геоданных?
Существует вызываемый метод, gdf_shp_state.query()
и он ожидает, что я отправлю запрос в виде string
. Может кто-нибудь помочь мне предоставить пример строки запроса, которую мне нужно использовать, чтобы получить фрейм геоданных для одного состояния?
Ответ №1:
фреймы геоданных работают так же, как обычные фреймы данных, поэтому запрос здесь может быть
gdf_shp_state.query("state=='ANDAMAN amp; NICOBAR'")
Чтобы выбрать строку (ы), состояние которой равно 'ANDAMAN amp; NICOBAR'
Вышесказанное эквивалентно:
gdf_shp_state[gdf_shp_state.state == 'ANDAMAN amp; NICOBAR']
Комментарии:
1. Две проблемы с этим ответом. Первый подход требует двойного равного размера (
==
). Второй должен использовать.loc
средство доступа2. @PaulH, спасибо, что заметили опечатку в подходе 1, но почему вы думаете, что во втором подходе нужно использовать
.loc
метод?3. @HaleemurAli Я попробовал оба упомянутых подхода, и это работает как шарм.
4. @PaulH Я тоже пробовал
gdf_shp_state.loc[gdf_shp_state.state == 'DELHI']
и это тоже работает.5. @HaleemurAli потому что ваш метод может случайно захватить столбцы в зависимости от схемы фрейма данных. На самом деле, я думаю, что этот метод устарел. Использование
.loc
средства доступа является однозначным, позволяет вам одновременно выбирать столбцы и «поощряется» дальнейший путь с фреймами данных.