gpt4 book ai didi

python - 如何使用 Pandas 测量 XY 点之间的距离

转载 作者:行者123 更新时间:2023-12-05 06:30:08 24 4
gpt4 key购买 nike

我有 code 可以测量 XY 坐标之间的距离,但我希望通过使用 pandas 来提高效率。

假设我有一些对象的 XY 坐标:

id_X = [1,2,7,19] #Subject 1
id_Y = [2,5,5,7] #Subject 1
cd_X = [3,3,8,20] #Subject 2
cd_Y = [2,5,6,7] #Subject 2

我想测量这些对象相对于另一个重要的 XY 坐标的距离:

Factor_X = [10,20,30,20] #Important XY
Factor_Y = [2,5,6,7] #Important XY

为了获得第一个主题的距离,我使用以下内容并遍历每一行。

dist = math.sqrt(((id_X[0] - Factor_X[0])**2)+((id_Y[0] - Factor_Y[0])**2))

为了获得第二个主题的距离,我会将 id_Xid_Y 换成 cd_Xcd_Y

如果我有很多主题,这将变得非常低效。因此,我试图通过 pandas 实现相同的概念。

以下是我的尝试:

d = ({                
'id_X' : [1,2,7,19],
'id_Y' : [2,5,5,7],
'cd_X' : [3,3,8,20],
'cd_Y' : [2,5,6,7],
'Factor_X' : [10,20,30,20],
'Factor_Y' : [2,5,6,7],
})

df = pd.DataFrame(data= d)

df['distance'] = math.sqrt(((df['id_X']-df['Factor_X'])**2)+((df['id_Y']-df['Factor_Y'])**2))
df['distance'] = math.sqrt(((df['cd_X']-df['Factor_X'])**2)+((df['cd_Y']-df['Factor_Y'])**2))

但这会返回一个错误:

TypeError: cannot convert the series to <class 'float'>

预期输出:

   id_X  id_Y  cd_X cd_Y  Factor_X  Factor_Y  id_distance  cd_distance
0 1 2 3 2 10 2 9 7
1 2 5 3 5 20 5 18 17
2 7 5 8 6 30 6 23 22
3 19 7 20 7 20 7 1 0

这种方法是否可行,它是否会创造一种更省时的方法?

最佳答案

过滤掉 idcd 并照常进行。

ids = df.filter(like='id')
cds = df.filter(like='cd')
factor = df.filter(like='Factor')

df['id_distance'] = ((ids.values - factor.values) ** 2).sum(1) ** .5
df['cs_distance'] = ((cds.values - factor.values) ** 2).sum(1) ** .5

df 
id_X id_Y cd_X cd_Y Factor_X Factor_Y id_distance cs_distance
0 1 2 3 2 10 2 9.000000 7.0
1 2 5 3 5 20 5 18.000000 17.0
2 7 5 8 6 30 6 23.021729 22.0
3 19 7 20 7 20 7 1.000000 0.0

关于python - 如何使用 Pandas 测量 XY 点之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52810262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com