如何使用数据帧计算点之间的距离?

2024-06-28 14:55:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是python3,我想用距离公式来表示x,y,z分量相对于JCFI文件的差异。我比较的另一个文件叫做CALV。我使用pandas将它们作为数据帧导入,然后拆分它们,使它们具有相同的长度,并且每个文件中的日期都匹配。你知道吗

这就是我正在尝试的。你知道吗

#matching dates between JCFI and CALV
date = JCFIdf.iloc[:1694,:1]
xcomp = JCFIdf.iloc[:1694,1:2]
ycomp = JCFIdf.iloc[:1694,2:3]
zcomp = JCFIdf.iloc[:1694,3:4] 
xcomp2 = CALVdf.iloc[201:1520,1:2]
ycomp2 = CALVdf.iloc[201:1520,2:3]
zcomp2 = CALVdf.iloc[201:1520,3:4]
diffx = (xcomp2 - xcomp)
diffy = (ycomp2 - ycomp)
diffz = (zcomp2 - zcomp)

#compute distance
distance = sqrt((diffx)**2 + (diffy)**2 + (diffz)**2) 
print(distance)

我得到的错误是 TypeError:必须是实数,而不是数据帧

所以我想知道我是否必须从数据帧中提取出所有的值,以便放入距离公式中,或者熊猫中是否有一个函数,这样我就可以工作了?你知道吗


Tags: 文件数据距离公式distanceilocxcompycomp2
1条回答
网友
1楼 · 发布于 2024-06-28 14:55:09

以下是使用numpy的矢量化解决方案:

import pandas as pd
import numpy as np
dist = np.sqrt((df.xcomp - df.xcomp2) ** 2 +
               (df.ycomp - df.ycomp2) ** 2 +
               (df.zcomp - df.zcomp2) ** 2)

#if you want to put the result in df
df['dist'] = pd.Series(dist)

相关问题 更多 >