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.

Pandas dataframe: convertir una columna a número con valor predeterminado

Me sorprende no haber encontrado nada sobre esto:

P: ¿Cómo puedo convertir valores de una columna a números con un valor predeterminado si la conversión falla?

Necesito que todos los valores sean números para poder realizar funciones aritméticas con ellos. Los datos de entrada sin procesar contienen valores no convertibles como “”, “**”, “no disponible”, ….

Por ejemplo:

1
2
*
4

Debería convertirse en:

1
2
0
4

Lo que he intentado:
to_numeric: No permite establecer un valor predeterminado. errors=coerce establecerá el valor como NaN, lo cual no se puede manejar aritméticamente posteriormente.
df[COLUMN].apply (makeNumber) con def makeNumber(value): return 0.0 aparentemente no hace nada con los valores de cadena.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una solución a este problema sería utilizar un bloque try-except dentro de una función y aplicarlo a la columna.

    def convertir_a_numero_con_predeterminado(valor, predeterminado):
        try:
            return float(valor)
        except ValueError:
            return predeterminado
    
    df[COLUMNA] = df[COLUMNA].apply(lambda x: convertir_a_numero_con_predeterminado(x, 0))
    

    Aquí, definimos una función convertir_a_numero_con_predeterminado que toma dos argumentos: el valor que debe convertirse y el valor predeterminado que se devolverá en caso de fallo en la conversión. Luego utilizamos un bloque try-except para intentar convertir el valor en un float, y si falla, devolvemos el valor predeterminado.

    Luego utilizamos la función apply en la columna del dataframe para aplicar esta función a cada valor de la columna. Esto convertirá todos los valores numéricos a float y todos los valores no numéricos (como "", "**", etc.) al valor predeterminado de 0.

    Ten en cuenta que puedes ajustar el valor predeterminado a lo que tenga sentido para tus datos.

Comments are closed.