【发布时间】:2019-03-10 13:18:31
【问题描述】:
我有一个带有纬度和经度的数据框 (restaurants) 和一个带有纬度和经度的数据框 (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))
但是,我想让代码更快,因为它非常慢。
您知道如何在更短的时间内达到相同的结果吗?
提前致谢。
附: haversine 是众所周知的函数,用于获取从 lat 和 lng 开始的公里距离。
【问题讨论】:
标签: python dataframe optimization haversine