Pandas Dataframe:对不带iterrows()的列执行操作

2024-04-20 12:10:11 发布

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

尽管标题令人费解,但我的问题很简单:我有一个数据帧,其中包含几个实体的坐标,并且想计算它们的距离,而不必在每一行上运行。我的数据帧叫做S,看起来像

                   X        Y
   id
4000000030992760  542478  175110
4000000030146750  538252  175394
4000000030237400  536188  176897
4000000030099730  536496  174693
4000000030418980  529663  181684
4000000030238500  532567  179727
4000000030146350  535936  173268
4000000030146220  535051  173088
4000000030709450  539079  173084
4000000031197690  522850  178571

我想计算出每段之间的距离。现在我是这样做的

^{pr2}$

但我相信有一种更有效的方法。在

谢谢


Tags: 数据方法实体id距离标题pr2
1条回答
网友
1楼 · 发布于 2024-04-20 12:10:11

所以你想建立一个距离矩阵? 如果是这样,您可以使用来自^{}^{}的已编写函数,如:

from scipy.spatial import distance_matrix
loc = df[['X','Y']].values
dist_mat = distance_matrix(loc, loc)

from scipy.spatial.distance import cdist
dist_mat = cdist(loc, loc)

更一般地说,您要寻找的是DataFrame列的向量化属性。您可以使用已经矢量化的函数(如numpyone)和运算符。{a{a}(或者不使用){cd4}(或者不使用){cd5}方法的话。在

计算所有地点之间距离的一种有效的numpy方法可以是:

^{pr2}$

相关问题 更多 >