gpt4 book ai didi

python - Sympify 在 pandas 数据框中查找 2 个坐标之间的距离时出现错误

转载 作者:太空宇宙 更新时间:2023-11-03 20:58:55 26 4
gpt4 key购买 nike

我有一个 pandas 数据框,有 4 列,分别代表 alpha 和 beta 2 个点的 X 和 Y 坐标。我想返回 alpha 和 beta 之间的欧几里德距离。

这是我的数据框:

   alpha_x       alpha_y        beta_x        beta_y
0 3.770047e+06 -1.933178e+07 3.771670e+06 -1.932118e+07
1 3.764890e+06 -1.927422e+07 3.759280e+06 -1.922667e+07
2 3.758185e+06 -1.922737e+07 3.758199e+06 -1.922815e+07
3 3.758748e+06 -1.923129e+07 3.758748e+06 -1.923129e+07
4 3.769639e+06 -1.934297e+07 3.770114e+06 -1.933611e+07

您可以使用以下代码加载它:

import pandas as pd

data =[[3770047.175941625, -19331776.34887237, 3771670.214117389, -19321175.08603543],
[3764889.7439331706, -19274223.583930705, 3759280.354792099, -19226669.81098408],
[3758184.9710026933, -19227374.77475073, 3758199.442536497, -19228148.049991384],
[3758748.247626108, -19231287.595948454, 3758748.247626108, -19231287.595948454],
[3769638.633410415, -19342974.05279793, 3770113.9676361005, -19336111.98073229]
]

dataframe = pd.DataFrame(data, columns = ['alpha_x', 'alpha_y', 'beta_x', 'beta_y'])

我尝试创建一个函数,通过毕达哥拉斯方程运行每行的相应坐标,并将其返回到新创建的第五列 [距离]

def dist(row):
h = abs(dataframe['alpha_x']- dataframe['beta_x'])
v = abs(dataframe['alpha_y']- dataframe['beta_y'])
d = sqrt((h**2) + (v**2))
return d

dataframe["distance"] = dataframe.apply(lambda row: dist(row), axis = 1)

但是,该列并未在我的 df 中创建,而是返回 SympifyError:

SympifyError: SympifyError: 0    1.150210e+08
1 2.292827e+09
2 5.981640e+05
3 0.000000e+00
4 4.731398e+07
dtype: float64

如果有人可以指导我在这里做错了什么,我将不胜感激。

最佳答案

更改函数,将dataframe替换为row以按行进行处理:

def dist(row):
h = abs(row['alpha_x']- row['beta_x'])
v = abs(row['alpha_y']- row['beta_y'])
d = np.sqrt((h**2) + (v**2))
return d

dataframe["distance"] = dataframe.apply(lambda row: dist(row), axis = 1)

没有循环的更好解决方案:

h = (dataframe['alpha_x'] - dataframe['beta_x']).abs()
v = (dataframe['alpha_y'] - dataframe['beta_y']).abs()
dataframe["distance1"] = np.sqrt((h**2) + (v**2))
<小时/>
print (dataframe)
alpha_x alpha_y beta_x beta_y distance \
0 3.770047e+06 -1.933178e+07 3.771670e+06 -1.932118e+07 10724.785623
1 3.764890e+06 -1.927422e+07 3.759280e+06 -1.922667e+07 47883.468630
2 3.758185e+06 -1.922737e+07 3.758199e+06 -1.922815e+07 773.410643
3 3.758748e+06 -1.923129e+07 3.758748e+06 -1.923129e+07 0.000000
4 3.769639e+06 -1.934297e+07 3.770114e+06 -1.933611e+07 6878.515513

distance1
0 10724.785623
1 47883.468630
2 773.410643
3 0.000000
4 6878.515513

关于python - Sympify 在 pandas 数据框中查找 2 个坐标之间的距离时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55828221/

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