我想遍历站点位置的数据框,然后比较我所有的技术以查看谁是最近的。拥有成千上万个网站和成千上万的技术人员,这需要花费5或6分钟以上的时间才能实现。
在查看改进的解决方案时,我看到每个人都在谈论矢量化,但是我不确定是否可以将此代码进行矢量化。我相信,可以通过从特定站点到技术纬度和经度的整个列应用great_circle函数,将内循环更改为向量化,这有意义吗?任何方向都会有所帮助。
for row in site.itertuples():
minDistance = 5000
site_cords = (row.latitude, row.longitude)
for techrow in tech.itertuples():
tech_id = techrow.ID
tech_cords = (techrow.latitude, techrow.longitude)
currDistance = geopy.distance.great_circle(site_cords, tech_cords).miles
if(currDistance < minDistance):
minDistance = currDistance
print("Updating tech id and distance.... ")
site.at[row.Index,"Tech Distance"] = currDistance
site.at[row.Index,"Tech ID"] = tech_id