小编典典

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

python

我有一个数据框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并在下一行中再次检查。

有没有像熊猫那样的三元条件运算符?


阅读 216

收藏
2021-01-16

共1个答案

小编典典

以熊猫为单位,以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)

要么:

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
2021-01-16