Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pandas:用于在数据帧中设置值的三元条件运算符_Python_Pandas_Conditional - Fatal编程技术网

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