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.

Python: ¿Puedo reemplazar los valores faltantes marcados como por ejemplo “Desconocido” por NaN en una columna de un dataframe?

Estoy intentando calcular porcentajes, hacer gráficos, etc. con mi DataFrame, pero muchos de los valores faltantes no están marcados como NaN, sino como ‘0::Desconocido’, ‘|Desconocido’, etc. Esto, por supuesto, hace que todo sea muy desordenado.

Solo quiero incluir las respuestas “Sí/No”, que existen, pero están en menor cantidad que los valores de cadena ‘0::Desconocido’.

¿Hay alguna forma de deshacerme de ellos y convertirlos en NaN?

He intentado usar fillna(), lambda, replace, etc. con varios ejemplos, pero nada parece ayudar.

Este es un ejemplo de la columna de mi DataFrame:

DataFrame

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, existe una forma de deshacerse de los valores “0::Desconocido” y “|Desconocido” y convertirlos en NaN. Puedes usar el método replace() para reemplazar esos valores por NaN. Puedes utilizar una expresión regular para encontrar esos valores y reemplazarlos por NaN.

    Aquí tienes un código de ejemplo:

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({'col1': ['Sí', 'No', '0::Desconocido', '|Desconocido', 'Sí']})
    
    df['col1'] = df['col1'].replace({'^0::.+$': np.nan, '^\|.+$': np.nan}, regex=True)
    
    print(df)
    

    Salida:

      col1
    0   Sí
    1   No
    2  NaN
    3  NaN
    4   Sí
    

    En este ejemplo, primero creamos un DataFrame con una muestra de los datos de la columna. Luego utilizamos el método replace() para reemplazar los valores que coinciden con las expresiones regulares ^0::.+$ y ^\|.+$ por NaN. Los caracteres ^ y $ son anclajes que coinciden con el inicio y el fin de una cadena, respectivamente. El . coincide con cualquier carácter y el + significa una o más ocurrencias. Las expresiones regulares ^0::.+$ y ^\|.+$ coinciden con cadenas que comienzan con “0::” o “|” respectivamente y tienen cualquier carácter después. Utilizamos el parámetro regex=True para indicar que estamos utilizando expresiones regulares en el reemplazo. Por último, imprimimos el DataFrame modificado.

    Puedes modificar las expresiones regulares para que coincidan con tus cadenas específicas de “Desconocido”. Esto te permitirá convertir esos valores en NaN y trabajar solo con los valores de “Sí/No”.

Comments are closed.