两个数据框的每个点之间的距离

时间:2019-11-14 22:50:06

标签: python pandas distance

我在熊猫中有两个数据框,其中包含两组粒子的坐标; 现在我想计算每个粒子之间的最小距离。 在实践中:将secon数据帧中的第i个粒子与第j个粒子进行比较,并寻找最小值。

由于数据集很大,我想避免两个for循环; 我怎样才能有效地实现这一目标?有内置功能可以完成这项工作吗?

distance.cdist(df1,df2)只是在计算同一行中每个粒子的距离。如何改善这一点?

谢谢

2 个答案:

答案 0 :(得分:0)

如何使用scipy.spatial.distance_matrix?但是,这可能会创建一个非常大的矩阵,具体取决于有多少个点。另一种选择是使用四叉树或KD Tree

答案 1 :(得分:0)

我不确定我是否正确理解了您的问题,但是如果您要计算第一个矩阵中的每个粒子与第二个矩阵中的每个粒子之间的距离,然后< / em>无法绕开两个循环(每个矩阵一个循环)。

如果要比较具有相同索引的粒子,可以执行以下操作:

for i in range(len(df1.index)):
    distance.cdist(df1.iloc[i,:],df2.iloc[i,:])

或者如果数据框的大小不同。

for i in range(min(len(df1.index), len(df2.index)):
    distance.cdist(df1.iloc[i,:],df2.iloc[i,:])