计算 python 数据帧中每行 X、Y 点之间的距离

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

Python 初学者在这里。我有一个由 X、Y 点组成的 python 数据框,看起来类似于:

我想做的是查看第 1 行并找到第 1 行和第 2 行之间的距离,并将这 2 个 X、Y 位置之间的新距离输出到名为“dist”的新列。然后对第 2 行和第 3 行执行相同的操作,依此类推。我的 X,Y 数据比这大得多,但这是我的问题的基础。最终数据停止,每个点组成一条更大的折线,因此终点的距离为零。

我知道我可以尽可能少地使用 geopy、numpy 和 pyproj。我最初尝试了 haversine 距离,但在导入 python 模块时遇到了问题。我不确定如何使用这些模块来解决这个问题,我是否需要一个搜索光标并将其应用于每一行?

python dataframe distance pyproj geographic-distance
1个回答
1
投票

为了计算以下点之间的距离,您可以使用以下方法。出于测试目的,我定义了一个矩形的角。

X = [0, 1, 1, 0, 0]
Y = [0, 0, 1, 1, 0]

df = pd.DataFrame({"X": X, "Y": Y})

df["X_lag"] = df["X"].shift(1)
df["Y_lag"] = df["Y"].shift(1)


distances = np.sqrt((df['X']-df["X_lag"])**2+(df['Y']-df["Y_lag"])**2)
print(distances)

这给出了具有以下值的 pandas 系列:

[nan, 1.0, 1.0, 1.0, 1.0]

所以现在你可以用

df.drop(["X_lag", "Y_lag"], axis=1, inplace=True)
删除滞后列,你会得到:

X  Y    distance
0  0       NaN
1  0       1.0
1  1       1.0
0  1       1.0
0  0       1.0
© www.soinside.com 2019 - 2024. All rights reserved.