为DataFrame获取不同的输出&正常实现相同的代码

时间:2015-06-22 21:37:36

标签: python pandas dataframe geopy

我试图计算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函数的变量是列表。

如何解释和修复这种奇怪的行为?

1 个答案:

答案 0 :(得分:1)

嗯,我得到了我的答案,值13921来自之前的代码,这些代码没有得到覆盖,更改后覆盖成为可能

cleandata.iloc[i,'distance'] = vincenty(location1, location2).meters

而不是cleandata.iloc[i]['distance']