Can't loop the distance between two locations. TypeError: 'numpy.float64' object is not iterable
Can't loop the distance between two locations. TypeError: 'numpy.float64' object is not iterable
我有一个包含以下位置的 csv 文件:
我编写了一个程序来测量两个位置之间的距离。因为我有很多位置,所以我创建了一个循环来遍历上面的位置。
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
如果我使用此代码,它将 return 所需的距离。
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
完整的回溯向我们展示了导致该错误的确切原因。
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
.
做什么
我有一个包含以下位置的 csv 文件:
我编写了一个程序来测量两个位置之间的距离。因为我有很多位置,所以我创建了一个循环来遍历上面的位置。
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
如果我使用此代码,它将 return 所需的距离。
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
完整的回溯向我们展示了导致该错误的确切原因。
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
.