У меня есть DataFrame с широтой и долготой мест (restaurants
) и DataFrame с широтой и долготой окрестностей (area
).
Я бы хотел для каждого района подсчитать количество ресторанов в 3-х километровой зоне (numberR
).
Я написал следующий код, и он работает:
df=pd.DataFrame()
numberR=[]
radius=3
for element in range(0,area['lon'].count()): #for every neighborhood
df=pd.DataFrame()
df['destLat']=restaurants['lat']
df['originLat']=areas['lat'][element]
df['destLon']= restaurants['lng']
df['originLon']=area['lon'][element]
for i, row in df.iterrows():
#for every restaurant I compute the distance from my neighborhood in km
l=[haversine(df.originLon[i],df.originLat[i],df.destLon[i],df.destLat[i]) for i, row in df.iterrows()]
numberR.append(sum(x<radius for x in l))
Однако я хотел бы ускорить код, поскольку он очень медленный.
Есть ли у вас какие-либо идеи о том, как можно добиться того же результата за меньшее время?
Заранее спасибо.
PS haversine
- хорошо известная функция для определения расстояния в километрах, начиная с широты и долготы.