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.
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.
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.