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 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

最佳答案

在条件下使用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

关于python - Pandas 条件 map /填充/替换,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56071559/

10-15 09:03