2017-01-31 4 views
1

Я пытаюсь создать некоторые логические переменные, используя Pandas, но у меня возникает эта ошибка, когда я пытаюсь использовать «и», «или» evalautions.Ошибка Pandas при попытке использовать и/или оператор

Целью этого кода является создание логической «колонки», которая имеет значение только при 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

Возможный дубликат [панды переменной создания с использованием нескольких If-то еще] (http://stackoverflow.com/вопросы/22504329/панды-переменное создание-использование многодискового если-то еще) –

ответ

1

Вам нужно & для biwise and, | для or и ~ для not, добавить ():

X['Possui_Apenas_Alerta'] = (X['XAlerta'] == 1) & (X['# Produtos'] == 1) 
1

Вы не можете иметь = символов в цепи, как это.

X['Possui_Apenas_Alerta'] = (X['XAlerta'] == 1 and X['# Produtos'] == 1) 

Просто с круглыми скобками следует исправить вашу проблему.