我有一个数据框pd。我想irr根据列值是高于还是低于阈值更改列的值。
pd
irr
如何单行执行此操作?我现在有
pd['irr'] = pd['irr'][pd['cs']*0.63 > pd['irr']] = 1.0 pd['irr'] = pd['irr'][pd['cs']*0.63 <= pd['irr']] = 0.0
当然,问题是我更改irr并在下一行中再次检查。
有没有像熊猫那样的三元条件运算符?
以熊猫为单位,以numpy为单位。
您可以使用numpy.where或转换boolean Series产生的条件float- Trues为1.0和Falses为0.0:
numpy.where
boolean Series
float
True
1.0
False
0.0
pd['irr'] = np.where(pd['cs']*0.63 > pd['irr'], 1.0, 0.0)
要么:
pd['irr'] = (pd['cs']*0.63 > pd['irr']).astype(float)
样品:
pd = pd.DataFrame({'cs':[1,2,5], 'irr':[0,100,0.04]}) print (pd) cs irr 0 1 0.00 1 2 100.00 2 5 0.04 pd['irr'] = (pd['cs']*0.63 > pd['irr']).astype(float) print (pd) cs irr 0 1 1.0 1 2 0.0 2 5 1.0