我试图对AD使用EW的vlookup值。
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'
发布于 2017-12-04 01:35:26
您的代码错误,来自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发布于 2017-12-04 01:38:42
看起来您正在检查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 BChttps://stackoverflow.com/questions/47625257
复制相似问题