尝试vlookup pandas时的键错误

时间:2017-12-04 01:26:08

标签: python python-3.x pandas

我正在尝试查看针对AD的EW值。

Dataframe 1

    EW      
0   A  
1   BC   

Dataframe 2

      AD     
0     A  
1     B  
2     BC  

然后我跑:

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

期望输出df3:

      AD     
0     A  
1     NaNa  
2     BC  

我一直在:KeyError: 'EW'

2 个答案:

答案 0 :(得分:1)

您的代码错误,来自df2没有列名'EW'

我建议您使用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

答案 1 :(得分:0)

看起来您正在检查df2.AD中的值是否在df1.EW中。您可以通过左合并完成此操作。

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