#python #pandas
#python #pandas
Вопрос:
Я хотел бы выбрать строку в соответствии с геометрией столбца. У меня проблема, потому что мой код возвращает пустой фрейм геоданных.
gdf = gpd.read_file('/home/gis/warstwadotestow.shp') # Your roofs
gdf.iloc[0]
fid powiat lokalnyid wersjaid ... aktualno_1 koniecwers kod_kst geometry
0 10176908.0 2205 2C9F7599-ADDA-AFD4-E053-CA2BA8C0483D 2020/06/01 00:00:00.000 ... 2018-07-09 None 108 POLYGON ((432885.670 718934.320, 432892.920 71...
Я хотел бы выбрать строку не по .iloc[0], а вот так:
roof = gdf[gdf['geometry'] == 'POLYGON ((432885.67 718934.3199999999, 432892.92 718935.98, 432893.57 718933.12, 432898.57 718934.26, 432899.7 718929.3, 432894.7 718928.16, 432896.01 718922.4399999999, 432888.76 718920.79, 432885.67 718934.3199999999))']
Код возвращает:
Empty GeoDataFrame
Columns: [fid, powiat, lokalnyid, wersjaid, status_bdo, nazwa, kategoria_, funkcja_og, funkcja_sz, liczba_kon, zabytek, skrot_kart, aktualnosc, aktualno_1, koniecwers, kod_kst, geometry]
Index: []
В чем проблема?
Комментарии:
1. что такое dtype столбца геометрии? это строка?
2. Это тип геометрии.
Ответ №1:
Вы сравнили столбец геометрического типа со строкой. Вот почему он возвращает пустой фрейм геоданных.
это пример кода для фильтрации фрейма данных pandas по столбцу геометрии.
from shapely.geometry import Point, Polygon
import geopandas
import pandas as pd
polys = geopandas.GeoSeries({
'foo': Polygon([(5, 5), (5, 13), (13, 13), (13, 5)]),
'bar': Polygon([(10, 10), (10, 15), (15, 15), (15, 10)]),
})
df = pd.DataFrame([])
df['geometry'] = polys
df = df[df['geometry'] == Polygon([(5, 5), (5, 13), (13, 13), (13, 5)])]
df