Convertir un objeto en un float en Pandas

Manav Narula 30 enero 2023
  1. Usa el método astype() para convertir un objeto a flotante en Pandas
  2. Usar la función to_numeric() para convertir el objeto en flotante en Pandas
Convertir un objeto en un float en Pandas

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

Artículo relacionado - Pandas DataFrame