3
respuestas

str a int/float

Hola, ¿Cómo puedo convertir una columna a enteros? En el video aparece automáticamente como enteros los valores de valor_factura y limite, pero a mi me muestra este error:

TypeError: unsupported operand type(s) for /: 'str' and 'str'

en esta parte del video:

tarjetas['iu'] = tarjetas['valor_factura'] / tarjetas['limite']

asi que me gustaría convertir esas 2 columnas a enteros o flotantes para poder realizar la división

3 respuestas

Intentando con

tarjetas.valor_factura.astype(int)

me aparece que

invalid literal for int() with base 10: '934,0122'

con

pd.to_numeric(tarjetas.valor_factura)

dice que

ValueError: Unable to parse string "934,0122" at position 0

Hola Daniel, cómo estás?

Por defecto, en Python los números de coma flotante están separados por punto y no por comas - como está en su base de datos (invalid literal for int() with base 10: '934,0122') por eso al intentar hacer la conversión acaba generando un error, porque el programa busca separadores que contengan punto para realizar la conversión.

Para corregir su base de datos, puede cambiar la coma por punto. Podemos hacerlo mediante el siguiente código, utilizando el método **replace para la sustitución en la columna valor_factura:


df['valor_factura'] = df['valor_factura'].str.replace(',', '.')

Con los números corregidos podemos hacer la conversión a float, pues ahora el programa entenderá el separador:

df['valor_factura'] = df['valor_factura'].astype(float)

Despues de eso podrá efectuar la división normalmente.

Si este post te ayudó, por favor, marca como solucionado ✓. Continúa con tus estudios

Muchisimas gracia :D ya lo corregi con valor factura y limite, pero me saltó otro error en el último comando del curso

sns.pairplot(x='edad',y='limite',data=tarjetas,kind='hex')

aparece que

TypeError: pairplot() got an unexpected keyword argument 'x'

sin embargo, "edad" si existe c: