2017-01-06 3 views
4

私は2つのデータフレームを結合しようとしていますが、Pythonが提供している可能性を忘れることはできません。Python - VLOOKUP(Excel)に似た関数

まずデータフレーム:

ID MODEL REQUESTS ORDERS 
1 Golf 123  4 
2 Passat 34  5 
3 Model 3 500  8 
4 M3  5  0 

第二データフレーム:私が欲しいもの

MODEL TYPE MAKE 
Golf Sedan Volkswagen 
M3  Coupe BMW 
Model 3 Sedan Tesla 

が、それはこのようになりますように、「作る」と呼ばれる最初のデータフレーム内の別の列を追加することです:

ID MODEL MAKE  REQUESTS ORDERS 
1 Golf Volkswagen 123  4 
2 Passat Volkswagen 34  5 
3 Model 3 Tesla  500  8 
4 M3  BMW  5  0 

私はすでにマージ、ジョイン、マップを見ましたが、すべての例では必要な情報が追加されました。データフレームの終わり。

+1

第2のデータフレームでのPassatはどこですか? –

+0

マージしないでください。 –

+0

質問は挿入についてですので、再オープン – jezrael

答えて

3

私は(df2の列MODEL内のいずれかの値がNaNを取得不足している場合)あなたはdf2で作成Seriesによってmapinsertを使用することができると思う:

df1.insert(2, 'MAKE', df1['MODEL'].map(df2.set_index('MODEL')['MAKE'])) 
print (df1) 
    ID MODEL  MAKE REQUESTS ORDERS 
0 1  Golf Volkswagen  123  4 
1 2 Passat   NaN  34  5 
2 3 Model 3  Tesla  500  8 
3 4  M3   BMW   5  0 
+0

@jezraelありがとうございます。すでにinsert()について考えていて、あなたの編集を見ただけです。 – Christian

0

join方法はVLOOKUPと非常によく似た働き。最初のデータフレームの列と2番目のデータフレームのインデックスを結合するため、MODELを2番目のデータフレームのインデックスとして設定し、MAKE列のみを取得する必要があります。

df.join(df1.set_index('MODEL')['MAKE'], on='MODEL') 

それは実際に単語VLOOKUPを使用してdocumentation for joinを見てみましょう。あなたが作る」より他に新しい列何かを呼び出すしたい場合、私はそれは限り短くし、素敵ではないでしょう認めなければならない、しかし

df1.merge(df2[['MODEL', 'MAKE']], how = 'left') 

+0

ありがとうございます@テッドペトロウ。ドキュメントには実際にその中にvlookupがあることがわかりました。私はちょうど().set_indexメソッドを使用していない。 – Christian

0

は、私はいつもこれを行うための簡単な方法であることをマージしました'