我正在尝试使用Pandas
创建一些布尔变量,但是当我尝试使用“and”,“或”evalautions时,我遇到了这个错误。
代码的目的是创建一个布尔“列”,仅在X['XAlerta'] = 1
和X['# Produtos'] Also = 1
时才为真。
X['Alerta']
是1
或0
变量,X['# Produtos']
是整数。
这是我的代码:
X['Possui_Apenas_Alerta'] = X['XAlerta'] == 1 and X['# Produtos'] == 1
这就是错误:
ValueError Traceback (most recent call last)
<ipython-input-56-1e64f0aae21c> in <module>()
56 X['Flag_Menos_1_Produto'] = X['# Produtos'] <= 1
57 X['Flag_Mais_3_Produtos'] = X['# Produtos'] >= 3
---> 58 X['Possui_Apenas_Alerta'] = X['XAlerta'] == 1 and X['# Produtos'] == 1
59 X['Possui_Apenas_Desemprego'] = X['XSeguroDesemprego'] == 1 and X['# Produtos'] == 1
60 X['Possui_Alerta_Perda_Anuaide'] = X['XSeguroPerdaRoubo'] == 1 and X['XAlerta'] == 1 and X['XRecargaAnuidadeBonificada'] == 1
C:\Users\foray\Anaconda3\lib\site-packages\pandas\core\generic.py in __nonzero__(self)
915 raise ValueError("The truth value of a {0} is ambiguous. "
916 "Use a.empty, a.bool(), a.item(), a.any() or a.all()."
--> 917 .format(self.__class__.__name__))
918
919 __bool__ = __nonzero__
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
答案 0 :(得分:1)
您不能在此类链中拥有=
个符号。
X['Possui_Apenas_Alerta'] = (X['XAlerta'] == 1 and X['# Produtos'] == 1)
只有括号可以解决你的问题。
答案 1 :(得分:1)
对于双向&
,您需要and
,|
需要or
,~
需要not
,还需要添加()
:
X['Possui_Apenas_Alerta'] = (X['XAlerta'] == 1) & (X['# Produtos'] == 1)