Идентификационная точка (нан нан) во фрейме данных Geo Pandas - PullRequest
1 голос
/ 19 июня 2020

У меня есть фрейм данных Geo Pandas с геометрией Point. Фрейм данных был создан из фрейма данных Pandas, который содержал отдельные столбцы для ориентации на восток и север, используя следующий код:

import numpy as np
import pandas as pd
import geopandas as gpd
from shapely.geometry import Point

df = pd.DataFrame({'id':[1,2,3,4,5],
                   'easting':[545200.0,np.nan,360800.0,270500.0,np.nan],
                   'northing':[130600.0,np.nan,510100.0,80350.0,np.nan]})

geodf = gpd.GeoDataFrame(df.drop(['easting','northing'],axis = 1),
                         crs = {'init': 'eps:277000'},
                         geometry = [Point(xy) for xy in zip(df['easting'],
                                                             df['northing'])])

phjCPHEastNrthGDF = gpd.GeoDataFrame(phjCPHEastNrthDF.drop(['easting','northing'],
                                                           axis = 1),
                                     crs = {'init': 'epsg:27700'},
                                     geometry = [Point(xy) for xy in zip(phjCPHEastNrthDF['easting'],
                                                                         phjCPHEastNrthDF['northing'])])

Фрейм данных Pandas и фрейм данных Geo Pandas печатаются следующим образом:

Исходный фрейм данных:

   id   easting  northing
0   1  545200.0  130600.0
1   2       NaN       NaN
2   3  360800.0  510100.0
3   4  270500.0   80350.0
4   5       NaN       NaN

Geo pandas фрейм данных:

   id               geometry
0   1  POINT (545200 130600)
1   2        POINT (nan nan)
2   3  POINT (360800 510100)
3   4   POINT (270500 80350)
4   5        POINT (nan nan)

На самом деле фрейм данных содержит более 250 тыс. Точек. Я хотел бы иметь возможность идентифицировать все точки, которые были созданы из значений восточного и северного положения np.nan (но исходные столбцы «восток» и «север» больше не доступны).

Я попытался использовать .isna() и .is_empty, но безуспешно:

print(geodf.loc[(geodf['geometry'].isna()),:])
print(geodf.loc[(geodf['geometry'].is_empty),:])

... оба печатают пустые фреймы данных.

Есть ли способ определить требуемые геометрические точки?

1 Ответ

2 голосов
/ 19 июня 2020
geodf[geodf['geometry'].is_valid]

Результат:

   id                       geometry
0   1  POINT (545200.000 130600.000)
2   3  POINT (360800.000 510100.000)
3   4   POINT (270500.000 80350.000)

для получения Nan очков используйте geodf[~geodf['geometry'].is_valid]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...