我正在尝试计算DataFrame的两个点之间的距离。如果我直接输入字符串,则会得到以下输出:
loca1 = [12.9404578177, 77.5548244743]
loca2 = [12.9404578177, 77.5548244743]
print vincenty(loca1,loca2).meters
>>>0.0
在使用Dataframe实现同一件事时,我得到以下输出:
from geopy.distance import vincenty
for i in range(len(cleandata)):
if i < 303708:
location2 = cleandata.iloc[i]['location']
location1 = cleandata.iloc[i+1]['location']
cleandata.iloc[i]['distance'] = vincenty(location1, location2).meters
else:
print i
print cleandata.loc[1]['distance']
>>>*13921
cleandata['location']
与我在第一个代码中输入的坐标字符串完全相同。在这两种情况下,我都检查了进入vincety函数的变量是列表。
如何解释和解决这种奇怪的行为?
最佳答案
好吧,我得到了答案,值13921来自先前的代码,没有被覆盖,更改后使覆盖成为可能
cleandata.iloc[i,'distance'] = vincenty(location1, location2).meters
代替
cleandata.iloc[i]['distance']
关于python - 为DataFrame和相同代码的正常实现获取不同的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30990272/