あるデータフレームから別のデータフレームへの2つのキーに基づいて最も近い一致を見つける方法は?

sokeefe1014

使用しているデータフレームが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

出力は、最も近いステーション名を持つロケーションデータフレームの新しい列になります

ただし、これを実現するために両方をループする方法がわかりません。どんな助けでも大歓迎です。

ありがとう、スコット

IanS

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]

編集
0

コメントを追加

0

関連記事

分類Dev

Rの2つの一致条件に基づいて、あるデータフレームから別のデータフレームに値を追加する

分類Dev

完全一致なしで最も近い一致に基づいて2つのデータフレームをマージする

分類Dev

2つのデータフレームから最も近い日付で一致させる方法は?

分類Dev

データ名声2のデータフレーム1から近い一致を見つける

分類Dev

最も近い日付に基づいて2つのデータフレームをマージする方法

分類Dev

1 つのデータフレームの 2 つの変数を「回答キー」データフレームの「キー」に一致させることに基づいて、「回答キー」データフレームから値を取得します。

分類Dev

列値のペア間の最も近い一致に基づいて2つのデータフレームをマージします

分類Dev

パンダ:最も近いインデックスの一致によって2つのデータフレームを組み合わせる方法は?

分類Dev

両方のデータフレームの特定の列で最も近い値を見つけることにより、1つのデータフレームから行を抽出して別のデータフレームに結合します

分類Dev

R:1つの完全一致と1つの最も近い(日付)一致に基づいてデータフレームをマージするにはどうすればよいですか?

分類Dev

一致する列に基づいて、あるデータフレームから別のデータフレームに行を移動する

分類Dev

別のデータフレームからの値に基づいてデータフレーム値の平均を見つける

分類Dev

部分的な文字列の一致に基づいて、別のデータフレームから1つのデータフレーム列を埋めます

分類Dev

最も近い一致に基づいて、大きなデータフレーム(100k以上の行)の値を別の値から効率的に置き換える方法は?

分類Dev

キー列に基づいて2つのデータフレームをマージする最良の方法

分類Dev

特定のベクトルに最も近いデータフレーム内の行を見つける方法

分類Dev

別の2つのデータフレームからの値に基づいてパンダデータフレームを埋める方法

分類Dev

別のデータフレームとの(排他的な)部分一致に基づいてデータフレームから行を削除する

分類Dev

Pyspark:1つの列の値に基づいて、あるデータフレームを別のデータフレームから減算します

分類Dev

個別のデータフレームの要素に基づいて行平均を見つける

分類Dev

他のデータフレームからの一致する値に基づいて、データフレームに新しい変数を作成する

分類Dev

Rの2番目のデータフレームで最も近い文字列を見つける

分類Dev

2つのデータフレームを比較し、一致する列の値に基づいてdfから行を削除します

分類Dev

別のデータフレームからの多くの行を条件として、データフレーム内の行に一致するものを見つける方法

分類Dev

両方の日付を保持する2つのデータフレーム内の最も近いPOSIXctによる値の一致

分類Dev

Rの2つのデータフレームの2つの列の一致するペア名に基づいて、別のデータフレームの他の値に値を追加します

分類Dev

2つのデータフレームからの2つの既存の列間の一致に基づいて頻度を追加します

分類Dev

データフレームの各列でゼロに最も近い値を見つける-R

分類Dev

Rの2つのデータフレーム間の文の最も近い一致

Related 関連記事

  1. 1

    Rの2つの一致条件に基づいて、あるデータフレームから別のデータフレームに値を追加する

  2. 2

    完全一致なしで最も近い一致に基づいて2つのデータフレームをマージする

  3. 3

    2つのデータフレームから最も近い日付で一致させる方法は?

  4. 4

    データ名声2のデータフレーム1から近い一致を見つける

  5. 5

    最も近い日付に基づいて2つのデータフレームをマージする方法

  6. 6

    1 つのデータフレームの 2 つの変数を「回答キー」データフレームの「キー」に一致させることに基づいて、「回答キー」データフレームから値を取得します。

  7. 7

    列値のペア間の最も近い一致に基づいて2つのデータフレームをマージします

  8. 8

    パンダ:最も近いインデックスの一致によって2つのデータフレームを組み合わせる方法は?

  9. 9

    両方のデータフレームの特定の列で最も近い値を見つけることにより、1つのデータフレームから行を抽出して別のデータフレームに結合します

  10. 10

    R:1つの完全一致と1つの最も近い(日付)一致に基づいてデータフレームをマージするにはどうすればよいですか?

  11. 11

    一致する列に基づいて、あるデータフレームから別のデータフレームに行を移動する

  12. 12

    別のデータフレームからの値に基づいてデータフレーム値の平均を見つける

  13. 13

    部分的な文字列の一致に基づいて、別のデータフレームから1つのデータフレーム列を埋めます

  14. 14

    最も近い一致に基づいて、大きなデータフレーム(100k以上の行)の値を別の値から効率的に置き換える方法は?

  15. 15

    キー列に基づいて2つのデータフレームをマージする最良の方法

  16. 16

    特定のベクトルに最も近いデータフレーム内の行を見つける方法

  17. 17

    別の2つのデータフレームからの値に基づいてパンダデータフレームを埋める方法

  18. 18

    別のデータフレームとの(排他的な)部分一致に基づいてデータフレームから行を削除する

  19. 19

    Pyspark:1つの列の値に基づいて、あるデータフレームを別のデータフレームから減算します

  20. 20

    個別のデータフレームの要素に基づいて行平均を見つける

  21. 21

    他のデータフレームからの一致する値に基づいて、データフレームに新しい変数を作成する

  22. 22

    Rの2番目のデータフレームで最も近い文字列を見つける

  23. 23

    2つのデータフレームを比較し、一致する列の値に基づいてdfから行を削除します

  24. 24

    別のデータフレームからの多くの行を条件として、データフレーム内の行に一致するものを見つける方法

  25. 25

    両方の日付を保持する2つのデータフレーム内の最も近いPOSIXctによる値の一致

  26. 26

    Rの2つのデータフレームの2つの列の一致するペア名に基づいて、別のデータフレームの他の値に値を追加します

  27. 27

    2つのデータフレームからの2つの既存の列間の一致に基づいて頻度を追加します

  28. 28

    データフレームの各列でゼロに最も近い値を見つける-R

  29. 29

    Rの2つのデータフレーム間の文の最も近い一致

ホットタグ

アーカイブ