2017-09-22 10 views
1

私はExcelでVLOOKUP関数は、それがおおよそまたは正確な一致を見つける必要があるかどうかの余分なパラメータを持っていVLOOKUP

2つのパンダのデータフレームにVLOOKUPスタイルの操作を行う必要があります。完全一致の場合、私は結合関数を使用することができます知っている。しかし、私は次のより大きな価値を見いだすと、どのようにして近似マッチを行うのだろうか?例えば

、私はこのようなマークとグレード定義データフレーム、持っている場合:

Student Mark 
John 65 
Peter 75 
Jason 79 

そして

Mark Symbol 
50  D 
60  C # table indicates a mark between 60 and 69 is a C symbol 
70  B 
80  A 

をどのように私はこのようなテーブルを取得することができます:

Student Mark Symbol 
John 65  C 
Peter 75  B 
Jason 79  B 

答えて

4

merge_asofを使用して最も近いキーにマージする

優れた10の
In [2484]: pd.merge_asof(df1, df2, on='Mark') 
Out[2484]: 
    Student Mark Symbol 
0 John 65  C 
1 Peter 75  B 
2 Jason 79  B 

詳細

In [2485]: df1 
Out[2485]: 
    Student Mark 
0 John 65 
1 Peter 75 
2 Jason 79 

In [2486]: df2 
Out[2486]: 
    Mark Symbol 
0 50  D 
1 60  C 
2 70  B 
3 80  A 
+1

は、その機能については知りませんでした! – Johan

+1

@Johanなぜあなたは答えを受け入れていないのですか? :) – IanS

+0

答えは説明の通り、デフォルトは 'direction = 'backward'''' 'nearest_''です(しかし、結果はOPによって要求されているように、私はコードと説明の間の矛盾に気付いています明快さ) – JohnE