2015-06-22 1 views
1

Я пытаюсь вычислить расстояние между двумя точками DataFrame. Если я входные строки непосредственно я получаю следующий вывод:Получение другого результата для 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'] имеет точно такие же координаты строк я вставил в 1-й код. Я проверил в обоих случаях переменные, входящие в функцию vincety, являются списками.

Как объяснить и исправить это странное поведение?

+1

Это потому, что вы печати 'loc', а не' iloc'? – samGbos

+0

Нет, iloc используется, когда вы являетесь целым числом indexthis case 'i', в то время как loc используется, когда вы хотите использовать индекс метки здесь 'distance' – Nishad

ответ

1

Ну, я получил мой ответ, значения 13921 был из предыдущего кода, который не получал перезаписаны, следующие изменения сделали перезапись возможно

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

вместо cleandata.iloc[i]['distance']