Вот пример рабочего кода. Сначала сделайте функцию для расчета вашего расстояния. Я реализовал простой расчет расстояния, но я бы порекомендовал, какой из них вы считаете наиболее полезным. Затем вы можете установить подкадр данных в пределах желаемого расстояния.
#Initialize DataFrame
df=pd.DataFrame(columns=['location','lat','lon'])
df['location']=['LA','NY','LV']
df['lat']=[34.05,40.71,36.16]
df['lon']=[-118.24,-74.00,-115.14]
#New point Reno 39.53,-119.81
newlat=39.53
newlon=-119.81
#Import trig stuff from math
from math import sin, cos, sqrt, atan2,radians
#Distance function between two lat/lon
def getDist(lat1,lon1,lat2,lon2):
R = 6373.0
lat1 = radians(lat1)
lon1 = radians(lon1)
lat2 = radians(lat2)
lon2 = radians(lon2)
dlon = lon2 - lon1
dlat = lat2 - lat1
a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2
c = 2 * atan2(sqrt(a), sqrt(1 - a))
return R * c
#Apply distance function to dataframe
df['dist']=list(map(lambda k: getDist(df.loc[k]['lat'],df.loc[k]['lon'],newlat,newlon), df.index))
#This will give all locations within radius of 600 km
df[df['dist']<600]