Cómo convertir un float en un entero en Pandas DataFrame

Asad Riaz 30 enero 2023
  1. astype(int) para convertir float en int en Pandas
  2. to_numeric() Método para convertir float a int en Pandas
Cómo convertir un float en un entero en Pandas DataFrame

Demostraremos métodos para convertir un float en un entero en un Pandas DataFrame - astype(int) y to_numeric() métodos.

Primero, creamos un array aleatorio usando una librería NumPy y luego lo convertimos en DataFrame.

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(5, 5) * 5)
print(df)

Si ejecutas este código obtendrás la siguiente salida que tiene valores en float.

0 1 2 3 4
00.3024483.5519583.8786602.3803524.741592
14.0541870.9409520.4590584.3148010.524993
22.8917334.9268854.9557732.6263734.144166
31.1276393.1968234.1440201.3506320.401138
41.4235372.0194553.0389450.4366573.823888

astype(int) para convertir float en int en Pandas

Para convertir float en int usaremos el método astype(int) proporcionado por el paquete Pandas. El código es,

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(5, 5) * 5)
print("*********** Random Float DataFrame ************")
print(df)
print("***********************************************")
print("***********************************************")
print("*********** Dataframe Converted into INT ************")
print(df.astype(int))
print("***********************************************")
print("***********************************************")

Después de ejecutar los códigos anteriores obtendremos la siguiente salida.

*********** Random Float DataFrame ************
0 1 2 3 4
01.5106181.0945614.1574194.4241954.872719
10.4576804.0029592.6609991.6869160.840159
21.7817783.8129240.5618270.5323280.752800
31.4565142.7749552.7001184.5033544.749377
42.2235204.8592380.4509773.2284442.541648
***********************************************
***********************************************
*********** Dataframe Converted into INT ************
 01234
011444
104210
213000
312244
424032
***********************************************
***********************************************

Podemos redondear el valor de float a int usando f.round(0).astype(int).

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.rand(5, 5) * 5)
print("*********** Random Float DataFrame ************")
print(df)
print("***********************************************")
print("***********************************************")
print("*********** Dataframe Converted into INT ************")
print(df.astype(int))
print("***********************************************")
print("***********************************************")
print("*********** Rounding Float value to INT ************")
print(df.round(0).astype(int))
print("***********************************************")
print("***********************************************")

Después de ejecutar el código obtendremos la siguiente salida.

*********** Random Float DataFrame ************
0 1 2 3 4
03.3944580.0712023.3132054.7858780.705612
11.9603530.8420851.2123320.8183432.637940
24.4078114.2390781.4190271.5263101.043394
33.6542164.6729721.7964393.1684260.734009
40.8487961.0240521.8593190.8443781.747628
***********************************************
***********************************************
*********** Dataframe Converted into INT ************
 01234
030340
110102
244111
334130
401101
***********************************************
***********************************************
*********** Rounding Float value to INT ************
 01234
030351
121113
244121
345231
411212
***********************************************
***********************************************

to_numeric() Método para convertir float a int en Pandas

Este método ofrece la funcionalidad de convertir con seguridad los tipos no numéricos (por ejemplo, las cadenas) en un tipo numérico adecuado.

s = pd.Series(["1.0", "2", -3])
print(pd.to_numeric(s, downcast="integer"))

Después de ejecutar el código obtendremos la siguiente salida.

01
12
2 -3
dtype: int8

Artículo relacionado - Pandas DataFrame