Python Pandas:用于在数据帧中设置值的三元条件运算符
我有一个数据帧Python Pandas:用于在数据帧中设置值的三元条件运算符,python,pandas,conditional,Python,Pandas,Conditional,我有一个数据帧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 pd['irr']=pd['irr'][pd['cs']*0.63>pd['irr']]=1.0 大熊猫的pd['irr']=pd['irr'][pd[
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
pd['irr']=pd['irr'][pd['cs']*0.63>pd['irr']]=1.0
大熊猫的pd['irr']=pd['irr'][pd['cs']*0.63
您可以使用或将由条件创建的布尔序列
转换为float
-True
s为1.0
和False
s为0.0
:
pd['irr'] = np.where(pd['cs']*0.63 > pd['irr'], 1.0, 0.0)
或:
样本:
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
你说“pandas no”,但你似乎展示了如何在pandas中实现它。这只是因为OP需要0/1,我们可以将bool
转换为所需的输出吗?但我们通常没有真正的三元运算?这种方法是否会提高设置的CopyWarning
?
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