我正在尝试计算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/

10-12 16:54