我有一个数据框,在索引中有一个位置的名称,并有2列(纬度和经度)。
LATITUDE LONGITUDE
SITE
LE0039 59.522583 29.566056
LE0073 59.287991 31.369472
LE0142 59.350241 32.531339
LE0278 59.964750 29.195850
.....
.....
我需要计算一个站点到其他站点的最小距离,并将其存储在每个站点的第三列中。我想使用scipy.spatial.distance.pdist()计算距离矩阵,但要做到这一点,我首先需要使用(LATITUDE,LONGITUDE)创建新列,以将其传递给pdist()。
所以我有2个问题。一种是如何组合经纬度和经度以拥有(lat,long)数组,另一种是如果您认为有一种更好的方法来计算最小距离
谢谢
答案 0 :(得分:0)
使用list
+ zip
的旧组合。 zip
创建配对的对象,列表创建列表,以便可以将其分配给数据框
df['combined'] = list(zip(df.LATITUDE, df.LONGITUDE))
输出:
LE0039 59.522583 29.566056 (59.522583, 29.566056)
LE0073 59.287991 31.369472 (59.287991000000005, 31.369472)
LE0142 59.350241 32.531339 (59.350241000000004, 32.531339)
LE0278 59.964750 29.195850 (59.96475, 29.19585)
旁注:我对十进制扩展很感兴趣,不知道为什么会有000005
关于距离,numpy
和scipy
应该有很多选择,远远超过我所熟悉的选择,因此在Google上进行快速搜索后,您应该找到很多不错的选择:)我通常坚持使用pdist()