Converti oggetto in float in Pandas

Manav Narula 3 gennaio 2023
  1. Usa il metodo astype() per convertire un oggetto in float in Pandas
  2. Usa la funzione to_numeric() per convertire un oggetto in virgola mobile in Pandas
Converti oggetto in float in Pandas

In questo tutorial, ci concentreremo sulla conversione di una colonna di tipo oggetto in float in Pandas. Una colonna di tipo oggetto contiene una stringa o una combinazione di altri tipi, mentre float contiene valori decimali. Lavoreremo sul seguente DataFrame in questo articolo.

import pandas as pd

df = pd.DataFrame(
    [["10.0", 6, 7, 8], ["1.0", 9, 12, 14], ["5.0", 8, 10, 6]],
    columns=["a", "b", "c", "d"],
)

print(df)
print("---------------------------")
print(df.info())

Produzione:

      a  b   c   d
0  10.0  6   7   8
1   1.0  9  12  14
2   5.0  8  10   6
---------------------------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
 #   Column  Non-Null Count  Dtype 
---  ------  --------------  ----- 
 0   a       3 non-null      object
 1   b       3 non-null      int64 
 2   c       3 non-null      int64 
 3   d       3 non-null      int64 
dtypes: int64(3), object(1)
memory usage: 224.0+ bytes
None

Notare il tipo di colonna 'a', che è del tipo object. Convertiremo questo oggetto in float usando le funzioni pd.to_numeric() e astype() in Pandas.

Nota
Questo tutorial non coprirà la funzione convert_objects() che è deprecata e rimossa.

Usa il metodo astype() per convertire un oggetto in float in Pandas

I pandas forniscono il metodo astype() per convertire una colonna in un tipo specifico. Passiamo float al metodo e impostiamo il parametro errors come 'raise', il che significa che solleverà eccezioni per valori non validi. Esempio:

import pandas as pd

df = pd.DataFrame(
    [["10.0", 6, 7, 8], ["1.0", 9, 12, 14], ["5.0", 8, 10, 6]],
    columns=["a", "b", "c", "d"],
)

df["a"] = df["a"].astype(float, errors="raise")

print(df.info())

Produzione:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
a    3 non-null float64
b    3 non-null int64
c    3 non-null int64
d    3 non-null int64
dtypes: float64(1), int64(3)
memory usage: 224.0 bytes

Usa la funzione to_numeric() per convertire un oggetto in virgola mobile in Pandas

La funzione Pandas to_numeric() può essere utilizzata per convertire una lista, una serie, un array o una tupla in un tipo di dati numerico, che significa int e float con segno o senza segno. Ha anche il parametro errors per sollevare eccezioni. Di seguito è mostrato un esempio di conversione del tipo di oggetto in float utilizzando to_numeric():

import pandas as pd

df = pd.DataFrame(
    [["10.0", 6, 7, 8], ["1.0", 9, 12, 14], ["5.0", 8, 10, 6]],
    columns=["a", "b", "c", "d"],
)

df["a"] = pd.to_numeric(df["a"], errors="coerce")

print(df.info())

Produzione:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 4 columns):
a    3 non-null float64
b    3 non-null int64
c    3 non-null int64
d    3 non-null int64
dtypes: float64(1), int64(3)
memory usage: 224.0 bytes
Autore: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Articolo correlato - Pandas DataFrame