如何将数据框的两列合并到另一列

时间:2018-12-06 19:03:10

标签: python pandas dataframe distance

我有一个数据框,在索引中有一个位置的名称,并有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)数组,另一种是如果您认为有一种更好的方法来计算最小距离

谢谢

1 个答案:

答案 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

关于距离,numpyscipy应该有很多选择,远远超过我所熟悉的选择,因此在Google上进行快速搜索后,您应该找到很多不错的选择:)我通常坚持使用pdist()