Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
4
respuestas

[Duda] Duda replace

El profe escribió entre las transformaciones lo siguiente: . replace(",","") para eliminar las comas pero eso no modificaría también los números ? Creo que convertiría 12,00 a 1200 por ejemplo.

4 respuestas

Justo venía a preguntar sobre lo mismo, creo que el criterio correcto sería :

datos["precio"] = datos["precio"].apply( lambda x: x.replace("$", "").replace(",", ".").strip())

Esto debería cambiar cada "," por un ".", lo que lo dejaría en el formato utilizado.

Espero tengamos una confirmación de esta información, saludos.

Según la IA y las pruebas que hice sí se trata de un error.

Estuve revisando, y según lo que vi en los desafíos que van aparte, existiría un problema si el valor es el siguiente:

1,000,00

En ese caso, reenplazaría ambas "," por un "." lo que haría imposible luego transformar al formato int64 o float64

Si tienes alguna solución a esto, sería bueno que me la hicieras saber para que vayamos aprendiendo juntos.

Saludos.

Creo que se debe usar regex. por ejemplo:

datos = pd.DataFrame({ 'valor': ['1,000,00', '2,500,50', '3,750,75'] })

Paso 1: Eliminar las comas de miles (primera coma)

datos['valor'] = datos['valor'].str.replace(r'(,)(?=\d{3},)', '', regex=True)

Paso 2: Reemplazar la última coma (decimal) por un punto

datos['valor'] = datos['valor'].str.replace(',', '.')

Paso 3: Convertir a float

datos['valor'] = datos['valor'].astype('float')

Convertir a float para obtener decimales

datos['valor'] = datos['valor'].astype(np.float64)

print(datos)