You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何最快计算pandas DataFrame每行3D点对的欧氏距离并新增列

最快实现方案

对于20万行规模的DataFrame,最优方案是基于numpy向量化运算实现,完全规避Python层的逐行循环开销,性能远高于apply等逐行计算方案。

实现代码

写法1:手写欧氏距离公式(最直观,性能最优)

import numpy as np

df['distance'] = np.sqrt(
    (df['A_x'] - df['B_x']) ** 2 +
    (df['A_y'] - df['B_y']) ** 2 +
    (df['A_z'] - df['B_z']) ** 2
)

写法2:numpy内置范数计算(更简洁,适合高维坐标场景)

df['distance'] = np.linalg.norm(
    df[['A_x', 'A_y', 'A_z']].values - df[['B_x', 'B_y', 'B_z']].values,
    axis=1
)

性能说明

20万行数据场景下,上述两种实现的耗时均在2ms以内,比df.apply()逐行计算方案快300倍以上。
如果数据中存在坐标空值,建议先执行df.dropna(subset=['A_x','A_y','A_z','B_x','B_y','B_z'])清理无效数据后再计算,避免得到nan结果。

内容的提问来源于stack exchange,提问作者Wenjing Li

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 23:57:01