我试图计算DataFrame两点之间的vincety距离。如果我直接输入字符串,我会得到以下输出:
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函数的变量是列表。
如何解释和修复这种奇怪的行为?
答案 0 :(得分:1)
嗯,我得到了我的答案,值13921来自之前的代码,这些代码没有得到覆盖,更改后覆盖成为可能
cleandata.iloc[i,'distance'] = vincenty(location1, location2).meters
而不是cleandata.iloc[i]['distance']