无法环绕两个位置之间的距离。 TypeError:“ numpy.float64”对象不可迭代

时间:2018-11-20 22:24:06

标签: python python-3.x python-3.6 geopy

我有一个csv文件,其中包含以下位置: enter image description here

我写了一个程序来测量两个位置之间的距离。由于位置很多,我创建了一个循环以遍历上面的位置。

import pandas as pd
import numpy as np
from pandas import DataFrame

Data = pd.read_csv('/home/aziz/Desktop/langlat.csv')
data = pd.DataFrame(Data)
lat1 = data['Lattude'][2:]
lat = pd.DataFrame(np.array(lat1))
lang1 = data['Langitude'][2:]
lang = pd.DataFrame(np.array(lang1))

import geopy.distance


for i in range(len(lat)):
    for j in range(len(lat)):
        coords_1 = (all(lat[0][i]), all(lang[0][i]))
        coords_2 = (all(lat[0][j]), all(lang[0][j]))
        print(geopy.distance.distance(coords_1, coords_2).km)

但是,输出为:

TypeError: 'numpy.float64' object is not iterable

如果我使用此代码,它将返回所需的距离。

coords_1 = (lat[0][3], lang[0][3])
coords_2 = (lat[0][5], lang[0][5])
print(geopy.distance.distance(coords_1, coords_2).km)

输出

84.44162834864254

通过一些研究,我知道我的数据是一维的。但是,我找不到解决问题的方法。那么,如何使程序在新位置上进行迭代?

部分数据:

Lattude,Langitude
,
26.332805,44.80257
24.849348,46.823551
,
24.848709,46.814429
24.585251,46.807482

1 个答案:

答案 0 :(得分:2)

完整的回溯向我们准确显示了导致该错误的原因。

Traceback (most recent call last):
  File "/home/rob/test/test.py", line 17, in <module>
    coords_1 = (all(lat[0][i]), all(lang[0][i]))
TypeError: 'numpy.float64' object is not iterable

丢掉那些all,就可以了:

for i in range(len(lat)):
    for j in range(len(lat)):
        coords_1 = (lat[0][i], lang[0][i])
        coords_2 = (lat[0][j], lang[0][j])
        print(geopy.distance.distance(coords_1, coords_2).km)
例如,

lat[0][i]是单个浮点数,而all需要一个可迭代的类型。我不明白您要如何使用all