ご指導をお願いします。
<手元のデータ>
dfa:住所、緯度_x、経度_x、2000行
dfb:緯度_y、経度_y、10行
<やりたいこと>
・dfbの(緯度_y、経度_y)に最も近いdfaの住所を、dfbに追加したい。
<困っている事>
・(緯度_y、経度_y)と(緯度_x、経度_x)は一致しない。
・(緯度_y、経度_y)→(緯度_x、経度_x)の最短距離1 と
逆の (緯度_x、経度_x)→(緯度_y、経度_y)の最短距離2が何故か完全一致せず、
最短距離をキーにしてmergeが使えない。
<やった事>
・(緯度_y、経度_y)→(緯度_x、経度_x)の最短距離1 と
逆の (緯度_x、経度_x)→(緯度_y、経度_y)の最短距離2を算出し、
最短距離をキーにしてmergeしてみた。
・.round(6)をつかって、有効桁数をdfaとdfbで合わせた。
<やった事>のコード a = dff_d[['緯度','経度']].values b=df[['緯度','経度']].values #(緯度_y、経度_y)→(緯度_x、経度_x)の最短距離1を算出 dist = distance.cdist(a, b, metric='euclidean') Lmin = np.min(dist, axis=1) dff_d['最小距離']=Lmin #(緯度_x、経度_x)→(緯度_y、経度_y)の最短距離2を算出 dist = distance.cdist(b a, metric='euclidean') Lmin = np.min(dist, axis=1) df['最小距離']=Lmin #マージ dff_d=pd.merge(df,dff_d,how='left',on='最小距離')
回答3件
あなたの回答
tips
プレビュー