我有一个数据框 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
并在下一行再次检查它。对于 pandas 是否有类似三元条件运算符的东西?
我有一个数据框 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
并在下一行再次检查它。在pandas中不行,在numpy中可以。
你可以使用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
bool
转换为所需的输出吗?但是一般情况下我们没有真正的三元操作符吗? - TeepeemmSettingWithCopyWarning
警告? - xicocaio