【发布时间】:2022-01-15 00:46:47
【问题描述】:
我正在尝试计算从 Dataframe 中列的每个点(坐标)到另一个 Dataframe 中另一列的每个点(坐标)的距离,并将最小距离保存到 Dataframe,以便生成的 Dataframe 具有与第一列长度相同。 数据: 实习生:
| ID | coordinates |
|---|---|
| 1 | (50.939266, 6.934996) |
| 2 | (50.935998, 6.931481) |
360 个条目
停止:
| Name | coordinates |
|---|---|
| A | (50.93576, 6.96046) |
| B | (50.9357, 6.95957) |
2082 个条目
想要的结果:
| ID | coordinates | min_distance |
|---|---|---|
| 1 | (50.939266, 6.934996) | 1.8263939732112 |
| 2 | (50.935998, 6.931481) | 0.3 |
intern:3 列,每列 360 个条目,其中最后一列是第二列中的坐标到停靠点 Dataframe 的每个坐标的最小距离
我试过了:
intern_index = 0
stops_index = 0
min_distance = 99999
hs.haversine((50.939266, 6.934996), (50.93576, 6.96046), unit=Unit.KILOMETERS)
Out: 1.8263939732112031
for i in intern['coordinates']:
for j in stops['coordinates']:
new_distance = hs.haversine(i, j, unit=Unit.KILOMETERS)
if new_distance < new_distance:
min_distance = new_distance
intern['min_distance'] = min_distance
这会产生:
| ID | coordinates | min_distance |
|---|---|---|
| 1 | (50.939266, 6.934996) | 22.941973 |
| 2 | (50.935998, 6.931481) | 22.941973 |
为什么它不保存正确的值?即使第一次尝试也小于这个值,也不能都是相同的距离
【问题讨论】:
-
坐标列是用元组还是字符串填充?
-
这是因为您将
min_distance声明为None。将min_distance声明为一个较大的值,例如 99999999。 -
@KelvinDucray 它充满了元组....haversine 函数可以找到
-
@TheFlyingObject 有效,但现在我的
min_distance列的每一行都有相同的条目:/ -
删除
for x in min_distance:。min_distance是数字,不是可迭代的。
标签: python pandas dataframe loops nested