簡體   English   中英

使用pandas和geopy計算兩點之間的距離

[英]Calculating the distance between two points using pandas and geopy

我有一個如下所示的熊貓數據框,包括四列,但每行有兩個點(lat1,lon1)和(lat2,lon2):

   lat1       lon1        lat2        lon2
=========   =========   =========   =========  
30.172705   31.126725   30.188281   31.132326
30.272805   31.226725   30.288281   31.232326
30.372905   31.326725   30.388281   31.332326
30.472105   31.426725   30.488281   31.432326
30.572205   31.526725   30.588281   31.532326

使用geopy KM 中每一行中提到的 (lat1,lon1) 和 (lat2,lon2) 之間距離的最有效方法是什么?

你的緯度/經度是什么坐標系?

讓我們試試 Euc-squrt squrt(delta(lat)**2+ delta(lon)**2)

 df['dist']=((df.lat1.sub(df.lat2)**2).add(df.lon1.sub(df.lon2)**2))**0.5

即使你自己似乎沒有做過任何研究,你也可以去:谷歌搜索結果: https : //geopy.readthedocs.io/en/stable/#module-geopy.distance

有了這些,您現在可以相對容易地找到如何在 Pandas 中訪問 DF 並應用操作(@wwnde 已經表明了這一點)。

結合這兩個基礎給出:

import pandas as pd
import numpy as np
from geopy import distance

# Generate some random data (lon, lat must be in (-90, 90)
df = pd.DataFrame(np.random.randint(-90, 90, size=(100, 4)), columns=list(['lo1', 'la1', 'lo2', 'la2']))
print(df)

# applies the distance function as described in the provided link
df['km'] = df.apply(lambda x: distance.distance((x[0], x[1]), (x[2], x[3])), axis=1)
print(df)

此外,我發現是第一個鏈接,但沒有閱讀它,因為解決方案非常簡單。

正如 StackOverflow 的 CoC 建議的那樣,請提供您嘗試過的內容並擁有正確的行為來簡單地查看谷歌。

暫無
暫無

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

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