2017-12-04 1 views
1

Ich versuche vlookup Werte von EW gegen AD.Schlüsselfehler beim Versuch, Pandas zu vlookup

Datenrahmen 1

EW  
0 A 
1 BC 

Datenrahmen 2

 AD  
0  A 
1  B 
2  BC 

Dann laufen I:

df3 = df1.insert(0, 'AD', df1['EW'].map(df2.set_index('EW')['AD'])) 
print (df1) 

Expect Ausgang für DF3:

 AD  
0  A 
1  NaNa 
2  BC 

ich erhalte: KeyError: 'EW'

Antwort

1

Ihr Code Fehler, kommen aus den df2 haben nicht die Spalten Name 'EW'

werde ich empfehlen die Verwendung von isin + np.where

df2.AD=np.where(df2.AD.isin(df1.EW),df2.AD,np.nan) 
df2 
Out[193]: 
    AD 
0 A 
1 NaN 
2 BC 
0

Es aussieht wie du überprüfen, ob die Werte in df2.AD in df1.EW sind. Sie können dies mit einer linken Zusammenführung erreichen.

import pandas as pd 

df1 = pd.DataFrame({'EW':['A','BC']}) 
df2 = pd.DataFrame({'AD':['A','B','BC']}) 
df3 = df2.merge(df1, how='left', left_on='AD', right_on='EW')[['EW']] 
df3.rename(columns={'EW':'AD'}) 

# returns: 
    EW 
0 A 
1 NaN 
2 BC 
Verwandte Themen