Converti un Float in un Integer in Pandas DataFrame

Asad Riaz 18 luglio 2021
  1. astype(int) per convertire float in int in Pandas
  2. Metodo to_numeric() per convertire float in int in Pandas
Converti un Float in un Integer in Pandas DataFrame

Mostreremo i metodi per convertire un float in un intero in un Pandas DataFrame - metodi astype(int) e to_numeric().

Per prima cosa creiamo un array casuale usando la libreria NumPy e poi lo convertiamo in DataFrame.

import pandas as pd
import numpy as np

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

Se esegui questo codice, otterrai l’output come segue che ha valori di 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) per convertire float in int in Pandas

Per convertire float in int potremmo usare il metodo Pandas DataFrame.astype(int). Il codice è,

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

Dopo aver eseguito i codici sopra, otterremo il seguente output.

*********** 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
***********************************************
***********************************************

Converte tutte le colonne DataFrame di Pandas in int.

Converti la colonna DataFrame di Pandas in int con arrotondamento

Possiamo arrotondare il valore float a int usando 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("***********************************************")

Dopo aver eseguito i codici, otterremo il seguente output.

*********** 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
***********************************************
***********************************************

Il df.astype(int) converte Pandas float in int trascurando tutte le cifre in virgola mobile.

df.round(0).astype(int) arrotonda il numero float di Pandas più vicino a zero.

Metodo to_numeric() per convertire float in int in Pandas

Questo metodo fornisce funzionalità per convertire in modo sicuro i tipi non numerici (ad esempio stringhe) in un tipo numerico adatto.

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

Dopo aver eseguito i codici, otterremo il seguente output.

01
12
2 -3
dtype: int8

Articolo correlato - Pandas DataFrame