d1=pd.DataFrame({'x':['a','b','c','c'],'y':[-1,-2,-3,0]})
d2=pd.DataFrame({'x':['d','c','a','b'],'y':[0.1,0.2,0.3,0.4]})
我想用d2中的对应d1.y
替换y <0的y
。就像Excel中的vlookup一样。核心问题是根据x替换y而不是简单地操纵y。我想要的是
Out[40]:
x y
0 a 0.3
1 b 0.4
2 c 0.2
3 c 0.0
答案 0 :(得分:3)
在条件下使用Series.map
s = d2.set_index('x')['y']
d1.loc[d1.y < 0, 'y'] = d1['x'].map(s)
print (d1)
x y
0 a 0.3
1 b 0.4
2 c 0.2
3 c 0.0
答案 1 :(得分:1)
您可以尝试以下方法:
d1.loc[d1.y < 0, 'y'] = d2.loc[d1.y < 0, 'y']