如何将数据帧的2列组合到另一列中

问题描述 投票:0回答:1

我有一个数据框,其中包含索引中的位置名称和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组合成一个(lat,long)数组,另一个是如果你认为有更好的方法来计算最小距离

谢谢

python pandas dataframe distance
1个回答
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

关于距离,numpyscipy应该有很多选项,比我熟悉的方式更多,所以你应该在google上快速搜索后找到许多好的选择:)我通常坚持使用pdist()

© www.soinside.com 2019 - 2024. All rights reserved.