Pandas: Проблема с выбором строки по столбцам, код возвращает пустой фрейм геоданных

#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