Python: удалить строку Pandas, если функция возвращает false, используя проверку _land через Cartopy - PullRequest
0 голосов
/ 05 ноября 2018

Я хочу удалить строку, основываясь на том, возвращает ли функция значение true или нет, функция проверяет, находятся ли значения широты и долготы на суше. Я хочу отбросить строки, где lat / long возвращает false.

Это то, что у меня есть, но я застрял:

def LAND_SHAPE_READER():
    land_shp_fname = shpreader.natural_earth(resolution='10m',
                                             category='physical', 
name='land')

    land_geom = unary_union(list(shpreader.Reader(land_shp_fname).geometries()))
    land = prep(land_geom)

def IS_LAND(x, y):
    return land.contains(sgeom.Point(x, y))

def MAP_PLOT_CHECK():
    if IS_LAND(df['Longitude'], df['Latitude']):
        return
    else:  
        #drop row here

1 Ответ

0 голосов
/ 05 ноября 2018

Я думаю, что самый безопасный способ сделать это - создать новый столбец, в котором будет храниться ваше значение IS_LAND.

# Apply this function to every row, where x is the row
# Save the True/False return value as a column
df['IS_LAND_RETURN'] = df.apply(lambda x: IS_LAND(x['Longitude'], x['Latitude']), axis=1)

После этого фильтрация тривиальна:

# Select df rows where IS_LAND_RETURN is true
land_only = df[df['IS_LAND_RETURN']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...