/ / Python GeoPy обработка на грешки - питън, обработка на грешки, координати, географско кодиране, геофизика

Грешка при работа с Python GeoPy - питон, обработка на грешки, координати, геокодиране, геопойство

Опитвам се да преобразувам някои адресикоординира в информационна рамка, използвайки GeoPy. Някои адреси не са валидни, но не знам кои от тях. Затова имам нужда от библиотеката да пропусне тези, които не са валидни или да ги променят Null или поне raise точното поле, което е неправилно.

Следните работи са добре:

import pandas as pd
import geopy
from geopy.geocoders import Nominatim
geolocator = Nominatim()

df = pd.DataFrame({"city": ["south hampton", "north park"]})

df["CityCoordinates"] = df["city"].apply(geolocator.geocode,timeout=1000000).apply(lambda x: (x.latitude, x.longitude))

Но в момента, когато има невалиден адрес, всичко се нарушава:

df = pd.DataFrame({"city": ["south hampton", "Southhamfdjhfdjhfgjgf", "north park"]})

df["CityCoordinates"] = df["city"].apply(geolocator.geocode, timeout=1000000).apply(lambda x: (x.latitude, x.longitude))

Други библиотеки като Geocoder също не могат да се справят с изключенията. Ламбда изглежда не позволява обработка на грешки.

Как мога да се справя с това с обработката на изключения.

Отговори:

1 за отговор № 1

Можете да се обадите на друга функция от вашата ламбда, която може да направи грешка работа:

df = pd.DataFrame({"city": ["south hampton", "Southhamfdjhfdjhfgjgf", "north park"]})

def eval_results(x):
try:
return (x.latitude, x.longitude)
except:
return (None, None)

df["CityCoordinates"] = df["city"].apply(geolocator.geocode, timeout=1000000).apply(lambda x: eval_results(x))

Резултатът е нещо подобно:

0     (42.8809229, -70.9625558)
1                  (None, None)
2    (32.7408842, -117.1305876)