ValueError: no se puede convertir NaN flotante a entero en Python

Rohan Timalsina 15 febrero 2024
  1. Use el método fillna() para corregir ValueError: no se puede convertir flotante NaN a entero en Python
  2. Use el método dropna() para corregir ValueError: no se puede convertir flotante NaN a entero en Python
  3. Utilice la función numpy.nan_to_num() para corregir ValueError: no se puede convertir NaN flotante en entero en Python
ValueError: no se puede convertir NaN flotante a entero en Python

El ValueError se genera cuando proporciona un argumento válido a una función, pero es un valor no válido. Por ejemplo, obtendrá el ValueError cuando proporcione un número negativo a la función sqrt() de un módulo matemático.

En Python, NaN significa No es un número, lo que indica las entradas que faltan en el conjunto de datos. Es un valor flotante especial que no se puede convertir a otros tipos que no sean flotantes.

El ValueError: no se puede convertir flotante NaN a entero ocurre cuando intenta convertir un valor NaN a un tipo entero.

Este tutorial le enseñará a corregir ValueError: no se puede convertir flotante NaN a entero en Python.

Use el método fillna() para corregir ValueError: no se puede convertir flotante NaN a entero en Python

Hemos utilizado el siguiente conjunto de datos para convertir los datos de precios a un tipo entero.

conjunto de datos utilizado para convertir datos a tipo flotante

Aquí hay un ejemplo de ValueError: no se puede convertir flotante NaN a entero en Python.

# import pandas
import pandas

# read csv file
df = pandas.read_csv("itemprice.csv")
# convert to an integer type
df["price"] = df["price"].astype(int)

Producción :

pandas.errors.IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer

Hay dos valores NaN en el conjunto de datos. Puede resolver este problema reemplazando los valores NaN con 0.

El método fillna() reemplaza los valores NaN con un valor dado en Python. Comprueba los valores NaN en la columna y los completa con un valor específico.

df_new = df.fillna(0)
print(df_new)

Producción :

  items  price
0     A  540.0
1     B  370.0
2     C    0.0
3     D  220.0
4     E    0.0

Ahora, convierta el tipo flotante en un tipo entero.

df_new["price"] = df_new["price"].astype(int)

Compruebe el tipo de datos para verificar.

print(df_new["price"].dtype)

Producción :

int32

Use el método dropna() para corregir ValueError: no se puede convertir flotante NaN a entero en Python

El método dropna() elimina todos los valores NULL en el objeto DataFrame.

El siguiente ejemplo elimina las filas que contienen valores NULL en el conjunto de datos.

df_new = df.dropna()
print(df_new)

Producción :

  items  price
0     A  540.0
1     B  370.0
3     D  220.0

Ahora, puede convertir fácilmente los datos a un tipo entero.

df_new["price"] = df_new["price"].astype(int)
print(df_new["price"].dtype)

Producción :

int32

Utilice la función numpy.nan_to_num() para corregir ValueError: no se puede convertir NaN flotante en entero en Python

También puedes solucionar este error usando la función numpy.nan_to_num(). Cambia el valor NaN a 0.0, que se puede convertir a un número entero.

import numpy

dt = numpy.nan
print(dt)

Producción :

nan

Use la función numpy.nan_to_num() para reemplazar el valor NaN con 0.0.

dt = numpy.nan_to_num(dt)
print(dt)

Producción :

0.0

Luego conviértalo a un tipo entero.

dt = dt.astype(int)
print(dt.dtype)

Producción :

int32

El ValueError: no se puede convertir NaN flotante en entero aparece cuando intenta convertir un valor NaN en un tipo entero. Puede solucionar este problema rellenando los valores NaN con un valor específico o eliminando las filas que contienen valores NaN.

Ahora ya sabe cómo resolver ValueError: no se puede convertir NaN flotante en entero en Python. Esperamos que estas soluciones le resulten útiles.

Rohan Timalsina avatar Rohan Timalsina avatar

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

Artículo relacionado - Python ValueError

Artículo relacionado - Python Error