gpt4 book ai didi

python - Pandas - 遍历 2 列(纬度和经度)并找到每个坐标与特定位置之间的距离

转载 作者:太空宇宙 更新时间:2023-11-03 14:43:28 25 4
gpt4 key购买 nike

我有一个包含 3 列的数据框(称为坐标):索引、纬度、经度 - 它大约有 1,000 行。我有一个特定地点的坐标,想找出该地点与数据框中所有坐标之间的距离。目前,我可以使用 geopy.distance 来查找两个特定坐标之间的距离。例如

import geopy.distance
site_coords = (38.898556, -77.037852)
place2_coords = (38.897147, -77.043934)
print(geopy.distance.vincenty(site_coords, place2_coords).km)

上面的代码给出了 0.5503161689006362(我已经检查过了,这是正确的)

我的问题是遍历数据框(称为坐标)并计算该数据框中所有坐标的距离。目前,这就是我所拥有的:

import geopy.distance
import pandas as pd
df = pd.read_csv('coordinates.csv', sep=',', header=None)

site_coords = (38.898556, -77.037852)
for index, row in df.iterrows():
place2_coords = df
x = geopy.distance.vincenty(site_coords, place2_coords).km
print(x)

但是,当我打印 x 时,它多次打印相同的距离,但距离不正确。坐标文件看起来像(在记事本中打开时)——但有更多的行:

,Latitude,Longitude
0,73.3645,-0.9015
1,73.3645,-0.3995
2,73.3645,-0.5825

所以我需要一种循环并找到距离的方法。

最佳答案

在这里查看 sechilds 之一的变体. site_coords 是 def 的输入。 apply 函数现在使用 2 个参数:DataFrame 中的 rowsite_coords:

import pandas as pd
import numpy as np
import geopy.distance

def calc_distance(row, site_coords):
station_coords = (row['lat'], row['lon'])
d = geopy.distance.distance(site_coords, station_coords).km
return(d)

df['distance'] = df.apply(calc_distance, site_coords=(38.898556, -77.037852), axis=1)

关于python - Pandas - 遍历 2 列(纬度和经度)并找到每个坐标与特定位置之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51425127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com