gpt4 book ai didi

python - Pandas - 列之间的欧几里得距离

转载 作者:行者123 更新时间:2023-12-01 23:29:27 25 4
gpt4 key购买 nike

我有一个数据框如下:

           uuid        x_1         y_1         x_2         y_2
0 di-ab5 82.31 184.20 148.06 142.54
1 di-de6 92.35 185.21 24.12 16.45
2 di-gh7 123.45 0.01 NaN NaN
...

我正在尝试计算新列中 [x_1, y_1][x_2, y_2] 之间的欧氏距离(本例中不是实际值)。

           uuid       dist
0 di-ab5 12.31
1 di-de6 62.35
2 di-gh7 NaN

注意事项:

  1. 某些行在某些数据点上有 NaN
  2. 可以将原始数据框中的数据表示为点(即 [1.23, 4.56])而不是拆分 x 和 y 坐标

我目前正在使用以下脚本:

df['dist']  = np.sqrt((df['x_1'] - df['x_2'])**2 + (df['y_1'] - df['y_2'])**2)

但是看起来冗长而且经常失败。使用 pandas、numpy 或 scipy 是否有更好的方法来做到这一点?

最佳答案

您可以使用np.linalg.norm,即:

df['dist'] = np.linalg.norm(df.iloc[:, [1,2]].values - df.iloc[:, [3,4]], axis=1)

输出:

     uuid     x_1     y_1     x_2     y_2        dist
0 di-ab5 82.31 184.20 148.06 142.54 77.837125
1 di-de6 92.35 185.21 24.12 16.45 182.030960
2 di-gh7 123.45 0.01 NaN NaN NaN

关于python - Pandas - 列之间的欧几里得距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66574858/

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