将两列的坐标合并为一

时间:2018-07-15 05:13:08

标签: python pandas

我正在尝试获取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))

但它不会接受。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我认为需要applyvincenty调用函数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