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.

Quiero localizar las filas en el marco de datos donde se encuentran estos valores particulares.

# Definir conjunto de empresas
companies = set(salarydf['company'])
companies = str(companies)
print(companies)

# Importar librería re
import re

# Buscar coincidencias de empresas en la variable companies
re.findall("Tata Consultancy Services|TCS|Wipro|Infosys", companies)

# Filtrar el dataframe salarydf por empresas específicas
salarydf.loc[salarydf['company'].str.contains('Tata Consultancy Services|TCS|Wipro|Infosys')]

Imagen del error en el código

En la última línea, estoy obteniendo un “ValueError: Cannot mask with non-boolean array containing NA / NaN values” (Valor de error: No se puede enmascarar con una matriz no booleana que contenga valores NA / NaN).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Este error está ocurriendo porque la variable que se pasa al método .loc[] no es una matriz booleana. En otras palabras, hay valores faltantes (NaN o NA) en la columna df['company'] que resultan en que la matriz booleana sea False donde hay valores faltantes.

    Para corregir este error, podemos llenar los valores faltantes con una cadena usando el método .fillna() antes de pasar la variable al método .loc[].

    Ejemplo:

    salarydf['company'].fillna('', inplace=True)
    salarydf.loc[salarydf['company'].str.contains('Tata Consultancy Services|TCS|Wipro|Infosys')]
    

    Alternativamente, podemos eliminar las filas con valores faltantes usando el método .dropna() antes de pasar la variable al método .loc[].

    Ejemplo:

    salarydf.dropna(subset=['company'], inplace=True)
    salarydf.loc[salarydf['company'].str.contains('Tata Consultancy Services|TCS|Wipro|Infosys')]
    

Comments are closed.