python - 计算数据帧所有行之间3d点的成对欧几里得距离
问题描述
我有一个 200000 行的数据框。数据框如下所示:
df = pd.DataFrame([['A-0001',21.8,3.2,6.6,'B-0001',2,8,9],['A-0002',21,3,6,'B-0002',1,8,8],['A-0003',8,9,2,'B-0003',7.64,5.5,12.4]])
df.columns = ['pointA',"A_x","A_y","A_z",'pointB',"B_x","B_y","B_z"]
那是 :
pointA A_x A_y A_z pointB B_x B_y B_z
A-0001 21.8 3.2 6.6 B-0001 2 8 9
A-0002 21 3 6 B-0002 1 8 8
A-0003 8 9 2 B-0002 7.64 5.5 12.4
"A_x","A_y","A_z"是A点坐标,"B_x","B_y","B_z"是B点坐标
我想添加一个新的df列“距离”,df [“距离]是每一行的pointA和point B之间的距离。
最快的方法是什么?
解决方案
最好以完全矢量化的方式执行此操作:
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)
推荐阅读
- maven - 配置 Maven pom 以访问 Vaadin 14 alpha/beta 预发行版
- java - 如何在 JAXB 适配器中使用属性作为键和整个元素作为值将复杂元素解析为 Map
- flutter - Flutter 升级后出现 Flutter Cloud Firestore 错误
- python - 在 Python 中即时从 CSV 生成镶木地板
- python-3.x - Keras ImageDataGenerator 映射错误
- java - Spring Boot JPA如何使用实体类从表中选择特定列?
- android - 检查 WorkRequest 是否在昨天发生
- javascript - 尝试使用正则表达式匹配 javascript 中的 REST 参数参数
- visual-studio-code - 终端向上箭头 - 不重复上一个命令
- c++ - 链表没有循环