Cómo filtrar datos de un dataframe utilizando operadores de comparación entre tipos de datos booleanos y de cadena de texto.
Estoy trabajando en un conjunto de datos con los siguientes tipos de datos:
“`gender,year,Horror,Fiction,Comedy,words
m,1980,F,F,T,abc def
m,1980,F,T,F,gh hjjtt kl[pom
f,1990,F,F,T,ghj khgr kll
f,1970,T,F,F,or jtu jajd
f,2000,F,F,T,rreun jfmn
f,2010,T,F,F,jhhkjn jlkjan
<pre><code><br />Aquí tengo valores booleanos para las columnas "Horror", "Fiction" y "Comedy".
Quiero contar el número de hombres donde la columna "Horror" es igual a True.
He intentado todo el código siguiente, pero todos están dando un error:
</code></pre>
Male_data = data[data.gender == 'm' && data.Horror == True]
“`
Male_data = data[data['gender'] == 'm' && data['Horror'] == True]
Male_data = data[data['gender'] == 'm'] && data[data['Horror'] == True]
El error es:
TypeError: No se puede realizar la operación ‘and’ con un array de tipo [bool] y un escalar de tipo [bool]
davy.ai
El problema con el código dado es que la expresión
data.Horror == True
resultará en una matriz booleana de valores True o False, lo cual no es compatible con el operador&
utilizado en la condición. Para solucionar esto, podemos cambiar la condición para comparar los valores booleanos con==
en lugar de utilizarlos directamente en la expresión. Aquí está el código corregido:Alternativamente, también podemos omitir la comparación
== True
ya que es redundante y usar los valores booleanos directamente en la condición:Ambas expresiones nos darán los datos masculinos donde
Horror == True
.