Python 简单的布尔逻辑给出了不明确的错误

Python 简单的布尔逻辑给出了不明确的错误,python,pandas,numpy,boolean,Python,Pandas,Numpy,Boolean,所以我有这4行代码,我已经花了几个小时试图找出如何让它工作。需要注意的是,我不能使用for循环来修复此问题: if(np.logical_and((signals['signal'] == 0),(signals['rsip']<=20))): signals['signal'] = 1.0 if((signals['signal'] == 1.0) & (signals['rsip']>=80)): signals['signal'] = 0

所以我有这4行代码,我已经花了几个小时试图找出如何让它工作。需要注意的是,我不能使用for循环来修复此问题:

if(np.logical_and((signals['signal'] == 0),(signals['rsip']<=20))):
        signals['signal'] = 1.0
if((signals['signal'] == 1.0) & (signals['rsip']>=80)):
        signals['signal'] = 0.0
if(np.logical_和((信号['signal']=0),(信号['rsip']=80)):
信号['signal']=0.0
我不断地遇到指向第一行的错误:

序列的真值不明确。请使用a.empty、a.bool()、a.item()、a.any()或a.all()


我不确定出了什么问题……正如你所看到的,我甚至尝试使用numpy逻辑都没有用。

Python
if
只接受标量True或False。
numpy
逻辑与数组或pandas系列一起工作会产生多个True/False元素(自己打印
&
表达式).这就是歧义所在。@hpaulj,所以我把符号改成了&,但仍然得到了相同的错误…有什么想法吗?
(信号['signal']==1.0)和(信号['rsip']>=80)
仍然是一个系列或数组,多个值。你到底想做什么?表达式允许你做一次选择。这是常规的Python。如果没有循环,
if
不能用于数组的单个元素。哦,我想我开始明白了…这就是为什么pd.where()这个问题实际上是我先前提出的一个问题的概念化尝试,这里概述:@hpaulj,谢谢你的洞察力