使用しているデータフレームが2つあります。1つには、多数の場所と座標(経度、緯度)があります。もう1つは、世界中の気象観測所からのデータとそれぞれの座標を含む気象データセットです。最寄りの気象観測所をデータセット内の各場所にリンクしようとしています。気象観測所の名前と私の場所の名前が一致していません。
座標が最も近いものでそれらをリンクしようとしているので、どこから始めればよいのかわかりません。
私はいくつかの使用を考えていました
np.abs((location['latitude']-weather['latitude'])+(location['longitude']-weather['longitude'])
それぞれの例
ロケーション...
Location Latitude Longitude Component \
A 39.463744 -76.119411 Active
B 39.029252 -76.964251 Active
C 33.626946 -85.969576 Active
D 49.286337 10.567013 Active
E 37.071777 -76.360785 Active
天気...
Station Code Station Name Latitude Longitude
US1FLSL0019 PORT ST. LUCIE 4.0 NE 27.3237 -80.3111
US1TXTV0133 LAKEWAY 2.8 W 30.3597 -98.0252
USC00178998 WALTHAM 44.6917 -68.3475
USC00178998 WALTHAM 44.6917 -68.3475
USC00178998 WALTHAM 44.6917 -68.3475
出力は、最も近いステーション名を持つロケーションデータフレームの新しい列になります
ただし、これを実現するために両方をループする方法がわかりません。どんな助けでも大歓迎です。
ありがとう、スコット
dist
最小化したい距離関数があるとしましょう。
def dist(lat1, long1, lat2, long2):
return np.abs((lat1-lat2)+(long1-long2))
特定の場所について、次のように最寄りの駅を見つけることができます。
lat = 39.463744
long = -76.119411
weather.apply(
lambda row: dist(lat, long, row['Latitude'], row['Longitude']),
axis=1)
これにより、すべての気象観測所までの距離が計算されます。を使用しidxmin
て、最も近い駅名を見つけることができます。
distances = weather.apply(
lambda row: dist(lat, long, row['Latitude'], row['Longitude']),
axis=1)
weather.loc[distances.idxmin(), 'StationName']
これらすべてを関数に入れましょう:
def find_station(lat, long):
distances = weather.apply(
lambda row: dist(lat, long, row['Latitude'], row['Longitude']),
axis=1)
return weather.loc[distances.idxmin(), 'StationName']
これで、locations
データフレームに適用することで、最も近いすべてのステーションを取得できます。
locations.apply(
lambda row: find_station(row['Latitude'], row['Longitude']),
axis=1)
出力:
0 WALTHAM
1 WALTHAM
2 PORTST.LUCIE
3 WALTHAM
4 PORTST.LUCIE
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加