Como Converter um Flutuador em um Inteiro em Pandas DataFrame

Asad Riaz 30 janeiro 2023
  1. astype(int) para converter float para int em Pandas
  2. Método to_numeric() para converter float em int em Pandas
Como Converter um Flutuador em um Inteiro em Pandas DataFrame

Demonstraremos métodos para converter uma margem flutuante em um número inteiro em um método Pandas DataFrame - astype(int) e to_numeric().

Primeiro, criamos uma array aleatória utilizando a biblioteca NumPy e depois a convertemos em DataFrame.

import pandas as pd
import numpy as np

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

Se você executar este código, você obterá a saída como segue, que tem valores do tipo 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 converter float para int em Pandas

Para converter float em int, poderíamos utilizar o método Pandas DataFrame.astype(int). O código é,

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("***********************************************")

Depois de executar os códigos acima, obteremos a seguinte saída.

*********** Random Float DataFrame ************
          0         1         2         3         4
0  3.629665  2.552326  3.995622  3.155777  4.715785
1  1.597920  2.090324  0.511498  1.936061  1.286486
2  1.051634  3.550839  2.468125  4.213684  2.329477
3  3.443836  2.749433  1.560226  3.037708  2.966934
4  4.686530  2.096314  4.028526  4.253299  1.175233
***********************************************
***********************************************
*********** Dataframe Converted into INT ************
   0  1  2  3  4
0  3  2  3  3  4
1  1  2  0  1  1
2  1  3  2  4  2
3  3  2  1  3  2
4  4  2  4  4  1
***********************************************
***********************************************

Ele converte todas as colunas Pandas DataFrame para int.

Converte a coluna DataFrame de Pandas para int com arredondamento

Podemos arredondar o valor float para int utilizando df.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("***********************************************")

Depois de executar os códigos, obteremos a seguinte saída.

*********** Random Float DataFrame ************
          0         1         2         3         4
0  4.888469  3.815177  3.993451  0.901108  1.958223
1  1.009212  1.532287  2.689159  1.008482  1.394623
2  4.152496  0.265261  4.667446  4.412533  4.797394
3  0.039770  1.526753  3.778224  0.073072  0.509409
4  1.292580  3.581438  0.759043  3.872206  2.591886
***********************************************
***********************************************
*********** Dataframe Converted into INT ************
   0  1  2  3  4
0  4  3  3  0  1
1  1  1  2  1  1
2  4  0  4  4  4
3  0  1  3  0  0
4  1  3  0  3  2
***********************************************
***********************************************
*********** Rounding Float value to INT ************
   0  1  2  3  4
0  5  4  4  1  2
1  1  2  3  1  1
2  4  0  5  4  5
3  0  2  4  0  1
4  1  4  1  4  3
***********************************************
***********************************************

O df.astype(int) converte Pandas float em int, negligenciando todos os dígitos de ponto flutuante.

O df.round(0).astype(int) arredonda o número de Pandas float para mais próximo de zero.

Método to_numeric() para converter float em int em Pandas

Este método oferece funcionalidade para converter com segurança tipos não-numéricos (por exemplo, strings) para um tipo numérico adequado.

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

Depois de executar os códigos, obteremos a seguinte saída.

01
12
2 -3
dtype: int8

Artigo relacionado - Pandas DataFrame