代码之家  ›  专栏  ›  技术社区  ›  anaz8

计算pandas数据帧中两点之间的欧几里德距离[重复]

  •  0
  • anaz8  · 技术社区  · 4 年前

    我有一个pandas数据框,有六列,前三列包含 x , y z 参考坐标和某个点的下三个坐标。我想把这两点之间的欧几里德距离放在数据帧的新列中。我考虑使用 numpy.linalg.norm 通过 pandas.apply 方法,但我不知道解析numpy函数的数据帧行的最佳方法是什么。你能给我一些建议吗?

    0 回复  |  直到 8 年前
        1
  •  6
  •   benten    8 年前

    你可能不需要任何花哨的魔法:

    df['dist'] = np.sqrt( (df.x1-df.x2)**2 + (df.y1-df.y2)**2 + (df.z1-df.z2)**2)
    
        2
  •  2
  •   ajwood John Lyon    6 年前

    我是这样做的:

    p1 = df[['x1', 'y1', 'z1']]
    p2 = df[['x2', 'y2', 'z2']]
    
    df['dist'] = ((p1 - p2)**2).sum(axis=1) ** 0.5