es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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]

Tags:  , , ,

Answer

  1. Avatar for 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:

    Male_data = data[(data.gender == 'm') & (data.Horror == True)]
    

    Alternativamente, también podemos omitir la comparación == True ya que es redundante y usar los valores booleanos directamente en la condición:

    Male_data = data[(data.gender == 'm') & (data.Horror)]
    

    Ambas expresiones nos darán los datos masculinos donde Horror == True.

Comments are closed.