расстояние Винсент в серии - PullRequest
0 голосов
/ 28 мая 2018

У меня есть pandas dataframe со столбцами широты и долготы, и я хочу вычислить расстояние Винсенти между двумя последовательными точками pi и pi+1.

         lat           long  
1    39.9852833333333  116.307367  
2    39.9852166666667  116.309550  
3    39.9851333333333  116.309767  
4    39.9850666666667  116.309883  
5    39.9847333333333  116.309933  

df['distance'] = vincenty( (df['lat'],df['long']), (df['lat'].shift(-1), df['long'].shift(-1)) )  

Я получаю следующую ошибку:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

1 Ответ

0 голосов
/ 28 мая 2018

Я считаю, что нужно сначала создать новые столбцы, а затем использовать dropna для удаления последних NaN s строк в lat_shifted и long_shifted, поэтому последнее значение Vincenty_distance равно NaN:

df['lat_shifted'] = df['lat'].shift(-1)
df['long_shifted'] = df['long'].shift(-1)

df['Vincenty_distance'] = df.dropna().apply(lambda x: vincenty((x['lat'], x['long']), (x['lat_shifted'], x['long_shifted'])), axis = 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...