Pandas Convertir Cadena a Numérico Tipo

Suraj Joshi 30 enero 2023
  1. Método pandas.to_numeric()
  2. Convertir valores de cadena de Pandas DataFrame a tipo numérico utilizando el método pandas.to_numeric()
  3. Convertir valores de cadena de Pandas DataFrame a tipo numérico con otros caracteres
Pandas Convertir Cadena a Numérico Tipo

Este tutorial explica cómo podemos convertir valores de cadena de Pandas DataFrame a tipo numérico utilizando el método pandas.to_numeric().

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Cost": ["300", "400", "350", "100", "1000", "400"],
    }
)

print(items_df)

Resultado:

    Id    Name  Cost
0  302   Watch   300
1  504  Camera   400
2  708   Phone   350
3  103   Shoes   100
4  343  Laptop  1000
5  565     Bed   400

Utilizaremos el ejemplo anterior para demostrar cómo podemos cambiar los valores del DataFrame al tipo numérico.

Método pandas.to_numeric()

Sintaxis

pandas.to_numeric(arg, errors="raise", downcast=None)

Convierte el argumento pasado como arg a tipo numérico. Por defecto, el arg será convertido a int64 o float64. Podemos establecer el valor del parámetro downcast para convertir el arg a otros tipos de datos.

Convertir valores de cadena de Pandas DataFrame a tipo numérico utilizando el método pandas.to_numeric()

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Cost": ["300", "400", "350", "100", "1000", "400"],
    }
)

print("The items DataFrame is:")
print(items_df, "\n")

print("Datatype of Cost column before type conversion:")
print(items_df["Cost"].dtypes, "\n")

items_df["Cost"] = pd.to_numeric(items_df["Cost"])
print("Datatype of Cost column after type conversion:")
print(items_df["Cost"].dtypes)

Producción :

The items DataFrame is:
    Id    Name  Cost
0  302   Watch   300
1  504  Camera   400
2  708   Phone   350
3  103   Shoes   100
4  343  Laptop  1000
5  565     Bed   400 

Datatype of Cost column before type conversion:
object 

Datatype of Cost column after type conversion:
int64

Convierte el tipo de datos de la columna Cost del items_df de object a int64.

Convertir valores de cadena de Pandas DataFrame a tipo numérico con otros caracteres

Si queremos convertir una columna a un tipo numérico con valores con algunos caracteres en ella, obtenemos un error diciendo ValueError: Unable to parse string. En estos casos, podemos eliminar todos los caracteres no numéricos y luego realizar la conversión de tipo.

import pandas as pd

items_df = pd.DataFrame(
    {
        "Id": [302, 504, 708, 103, 343, 565],
        "Name": ["Watch", "Camera", "Phone", "Shoes", "Laptop", "Bed"],
        "Cost": ["$300", "$400", "$350", "$100", "$1000", "$400"],
    }
)

print("The items DataFrame is:")
print(items_df, "\n")

print("Datatype of Cost column before type conversion:")
print(items_df["Cost"].dtypes, "\n")

items_df["Cost"] = pd.to_numeric(items_df["Cost"].str.replace("$", ""))
print("Datatype of Cost column after type conversion:")
print(items_df["Cost"].dtypes, "\n")

print("DataFrame after Type Conversion:")
print(items_df)

Producción :

The items DataFrame is:
    Id    Name   Cost
0  302   Watch   $300
1  504  Camera   $400
2  708   Phone   $350
3  103   Shoes   $100
4  343  Laptop  $1000
5  565     Bed   $400 

Datatype of Cost column before type conversion:
object 

Datatype of Cost column after type conversion:
int64 

DataFrame after Type Conversion:
    Id    Name  Cost
0  302   Watch   300
1  504  Camera   400
2  708   Phone   350
3  103   Shoes   100
4  343  Laptop  1000
5  565     Bed   400

Elimina el carácter $ adjunto a los valores de la columna Cost y luego convierte estos valores al tipo numérico utilizando el método pandas.to_numeric().

Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Artículo relacionado - Pandas Data Type