我正在尝试查看针对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'
答案 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