2015-06-22 63 views
1

我試圖計算DataFrame中兩點之間的vincety距離。如果我輸入字符串直接,我得到下面的輸出:爲DataFrame獲取不同的輸出並正常實現相同的代碼

loca1 = [12.9404578177, 77.5548244743] 
loca2 = [12.9404578177, 77.5548244743] 
print vincenty(loca1,loca2).meters 

>>>0.0 

雖然有數據幀實現同樣的事情,我得到以下的輸出:

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

覆蓋可能

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

是不是因爲你是印刷'loc'而不是'iloc'? – samGbos

+0

不,當你是整數時使用iloc這個case'i',而當你想在這裏使用標籤索引時使用loc''distance' – Nishad

回答

1

嗯,我得到了我的答案,值13921是從沒有得到過以前寫的代碼,下列情況變了,而不是cleandata.iloc[i]['distance']

相關問題