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.0和Falses为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)