HOWTO · Pandas

Convertir un objeto en un float en Pandas

Este tutorial demuestra cómo convertir una columna de tipo objeto en un float de un DataFrame de pandas

En esta página

En este tutorial, nos centraremos en convertir una columna de tipo objeto para que flote en Pandas. Una columna de tipo objeto contiene una cadena o una mezcla de otros tipos, mientras que el float contiene valores decimales. Trabajaremos en el siguiente DataFrame en este artículo.

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

Producción :

      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

Fíjate en el tipo de columna 'a', que es del tipo object. Convertiremos este objeto en flotante usando las funciones pd.to_numeric() y astype() en Pandas.

Nota
Este tutorial no cubrirá la función convert_objects() que está desaprobada y eliminada.

Usa el método astype() para convertir un objeto a flotante en Pandas

Los pandas proporcionan el método astype() para convertir una columna a un tipo específico. Pasamos float al método y ponemos el parámetro errors como 'raise', lo que significa que elevará las excepciones para los valores inválidos. Ejemplo:

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

Producción :

<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

Usar la función to_numeric() para convertir el objeto en flotante en Pandas

La función Pandas to_numeric() puede utilizarse para convertir una lista, una serie, un array o una tupla a un tipo de datos numérico, lo que significa con signo, o sin signo, de tipo int y float. También tiene el parámetro errors para plantear excepciones. A continuación se muestra un ejemplo de conversión del tipo de objeto a flotante usando 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())

Producción :

<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