都唔知你係pandas出error定自己想將nan轉做error,係既你咪自己.fillna("Error") 囉
同埋fill個error做string係完全無意義,成個column dtype會轉咗object,冇得再進行運算
s = df2['A'].map(df1.set_index('A')['B'])
df2["C"] = np.select([s.isnull(), s<df2["B"], s>df2["B"]],
["Error", "Over", "Under"], "Same")
print (df2)
A B C
0 1 300 Under
1 2 300 Over
2 1 1000 Over
3 100 100 Error
4 3 100 Under
5 4 100 Under
6 5 100 Under
7 5 200 Same
8 6 49 Under