【发布时间】:2018-07-19 14:22:52
【问题描述】:
我有一个包含 3 列的数据框(称为坐标):索引、纬度、经度 - 它大约有 1,000 行。我有一个特定地点的坐标,并想找到该地点与数据框中所有坐标之间的距离。目前,我可以使用 geopy.distance 来查找两个特定坐标之间的距离。例如
import geopy.distance
site_coords = (38.898556, -77.037852)
place2_coords = (38.897147, -77.043934)
print(geopy.distance.vincenty(site_coords, place2_coords).km)
上面的代码给出了0.5503161689006362(我已经检查过,这是正确的)
我的问题是循环遍历数据框(称为坐标)并计算该数据框中所有坐标的距离。目前,这就是我所拥有的:
import geopy.distance
import pandas as pd
df = pd.read_csv('coordinates.csv', sep=',', header=None)
site_coords = (38.898556, -77.037852)
for index, row in df.iterrows():
place2_coords = df
x = geopy.distance.vincenty(site_coords, place2_coords).km
print(x)
但是,当我打印 x 时,它多次打印相同的距离并且距离不正确。坐标文件看起来像(在记事本中打开时) - 但有更多行:
,Latitude,Longitude
0,73.3645,-0.9015
1,73.3645,-0.3995
2,73.3645,-0.5825
所以我需要一种方法来循环并找到距离。
【问题讨论】:
-
您的循环正在计算在循环外定义的
site_coords和在某处定义但绝对不在循环内的tile_coords之间的距离。所以你的循环只是一遍又一遍地计算同样的事情。您的意思是在 x 的计算中使用place2_coords吗? -
是的,抱歉,tile_coords 是 place2_coords。是的,所以我需要 place2_coords 更改并成为坐标文件@ALollz 中的所有值
-
根据文档geopy.readthedocs.io/en/stable/…vincenty 已被弃用,你知道吗?
-
哦,我不是我会改变的,谢谢@Yuca。但我仍然需要找到一种方法来遍历整个坐标
-
数据框的列是否只有“纬度”和“经度”?