簡體   English   中英

具有兩個緯度列和兩個長列的熊貓數據框中的距離計算

[英]Distance calculation in pandas dataframe with two lat columns and two long columns

我有一個帶有這 4 列的 Pandas Dataframe df:

  • 皮卡緯度
  • 皮卡_經度
  • dropoff_latitude
  • dropoff_longitude

我想創建一個新列,其中包含上車點和下車點之間的距離。

我創建了這個函數:

def calcul_de_distance_vol_oiseau(data):

R = 6373.0

""" je change les variables en radians car python parle en radian et pas en degrées """
data['pickup_longitude'] = data['pickup_longitude'].apply(radians)
data['pickup_latitude'] = data['pickup_latitude'].apply(radians)
data['dropoff_longitude'] = data['dropoff_longitude'].apply(radians)
data['dropoff_latitude'] = data['dropoff_latitude'].apply(radians)

data['diff_lon'] = data['dropoff_longitude'] - data['pickup_longitude']
data['diff_lat'] = data['dropoff_latitude'] - data['dropoff_latitude']

data['calcul_intermediaire']= (data['diff_lat'] / 2).apply(sin)**2 + data['pickup_latitude'].apply(cos) * data['dropoff_latitude'].apply(cos) * (data['diff_lon'] / 2).apply(sin)**2

data['distance'] = R*np.arctan2((data['calcul_intermediaire']).apply(sqrt),(1 - data['calcul_intermediaire']).apply(sqrt))

return data

但是當我想驗證我的點之間的距離時,我沒有與本網站https://www.sunearthtools.com/fr/tools/distance.php中計算 gps 點之間的距離相同的結果。 我認為我的函數中存在數學錯誤,但我沒有找到在哪里。

提前致謝

我認為你只需要:

data['pickup_longitude'] = data['pickup_longitude'].apply(radians)

以及其他列的類似代碼(使用 lambda 或定義函數)。

這有效,您還可以使用 geopy.distance.distance():

>>def distance(row):
    >>>return geopy.distance.distance((row.start_lats, row.start_longs),(row.end_lats, row.end_longs)).mi

>>new_df['miles_traveled']= new_df.apply(lambda r: distance(r), axis=1)

(遲到的答案但是...)我建議您使用 geopy.distance vincenty ,定義一個函數以將其與 Pandas 接口並使用此函數創建新的 dateframe 列:

from geopy.distance import vincenty

def pandasVincenty(row):
    '''calculate distance (m) between two lat&long points using the Vincenty formula '''

    return vincenty((row.pickup_latitude, row.pickup_longitude), (row.dropoff_latitude, row.dropoff_longitude)).meters 


data['distance'] =  data.apply(lambda r: pandasVincenty(r), axis=1)

這使用度數作為輸入並給出米作為輸出......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM