2015-06-21 58 views
3

我有位置列一個數據幀包含緯度,經度位置如下如何在數據框列上使用地理複製距離?

deviceid        location   
1102ADb75  [12.9404578177, 77.5548244743] 

如何使用geopy的vicenty功能得到連續的行之間的距離? 我嘗試下面的代碼

from geopy.distance import vincenty 
vincenty(df['location'].shift(-1), df['location']).miles 

它返回下列錯誤 - 類型錯誤:__new __()採用至多4個參數(5給出)

EDIT - ,其中df是一含熊貓數據幀的DeviceID &地點列以上 另外

print type(df) 
class 'pandas.core.frame.DataFrame' 
+0

究竟是什麼'df'你的情況?請將「問題描述」添加到問題描述中,因爲「dataframe」有點模糊,例如print(df,type(df))會很好 – dm295

+1

編輯,無論如何第一行說我有一個數據框 – Nishad

+0

好吧,我不知道它是一個熊貓數據框;當問一個問題時最好清楚明確 – dm295

回答

3
基於

如圖所示在geopy's github你應該通過兩個元到vincenty功能:

>>> from geopy.distance import vincenty 
    >>> point_a = (41.49008, -71.312796) 
    >>> point_b = (41.499498, -81.695391) 
    >>> print(vincenty(point_a, point_b).miles) 
    538.3904451566326 

編輯

import pandas as pd 
from geopy.distance import vincenty 

data = [[101, [41.49008, -71.312796]], 
     [202, [41.499498, -81.695391]]] 
df = pd.DataFrame(data=data, columns=['deviceid', 'location']) 

print df 
>>> deviceid     location 
>>> 0  101 [41.49008, -71.312796] 
>>> 1  202 [41.499498, -81.695391] 

print vincenty(df['location'][0], df['location'][1]).miles 
>>> 538.390445157 
+1

我知道這就是爲什麼這個問題無法解決我們如何去做的問題 – Nishad

相關問題