Pandas:用于在DataFrame中设置值的三元条件运算符

use*_*067 5 python conditional pandas

我有一个数据帧pd.我想irr根据是否高于或低于thresh hold 更改列的值.

我怎么能在一行中做到这一点?我现在有

pd['irr'] = pd['irr'][pd['cs']*0.63 > pd['irr']] = 1.0
pd['irr'] = pd['irr'][pd['cs']*0.63 <=  pd['irr']] = 0.0
Run Code Online (Sandbox Code Playgroud)

问题当然是我irr在下一行再次更改并检查它.

是否有类似熊猫三元条件运算符的东西?

jez*_*ael 11

在熊猫中没有,在numpy是的.

您可以使用numpy.where或转换boolean Series的条件下创建的float- Trues为1.0Falses为0.0:

pd['irr'] = np.where(pd['cs']*0.63 > pd['irr'], 1.0, 0.0)
Run Code Online (Sandbox Code Playgroud)

要么:

pd['irr'] = (pd['cs']*0.63 > pd['irr']).astype(float)
Run Code Online (Sandbox Code Playgroud)

样品:

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
Run Code Online (Sandbox Code Playgroud)