我正在尝试获取A点到B点的距离,但是坐标分布为4列。
Point_a_lat Point_a-long Point_b_lat Point_B_long
-----------------------------------------------------
40.744607 -73.990742 40.752073 -73.985370
由于Geopy.distance无法通过将坐标分布到四列中来计算距离,所以我最好的猜测是简单地将点a的经度和纬度以及点b的相似度相结合。
我认为这样会更容易,但是我遇到了麻烦。
我试图将它们变成列表
df['point_a'] = list(zip(df.Point_a_lat, df.Point_a_lon))
df['point_b'] = list(zip(df.Point_b_lat, df.Point_b_lon))
但它不会接受。
有什么想法吗?
答案 0 :(得分:2)
我认为需要apply
和vincenty
调用函数axis=1
来处理每行的进程:
from geopy.distance import vincenty
df['distance'] = df.apply(lambda x: vincenty((x['Point_a_lat'], x['Point_a_lon']),
(x['Point_b_lat'], x['Point_b_lon'])).m, axis=1)
print (df)
Point_a_lat Point_a_lon Point_b_lat Point_b_lon distance
0 40.744607 -73.990742 40.752073 -73.98537 945.107136