Pandas Zeichenkette in numerischen Typ umwandeln

Suraj Joshi 30 Januar 2023
  1. Methode pandas.to_numeric()
  2. Konvertieren von Zeichenkette-Werten eines Pandas DataFrame in den numerischen Typ mit der Methode pandas.to_numeric()
  3. Konvertieren von Zeichenkette-Werten des Pandas DataFrame in den numerischen Typ mit anderen Zeichen darin
Pandas Zeichenkette in numerischen Typ umwandeln

Dieses Tutorial erklärt, wie wir Zeichenkette-Werte von Pandas DataFrame in den numerischen Typ konvertieren können, indem wir die Methode pandas.to_numeric() verwenden.

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)

Ausgabe:

    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

Anhand des obigen Beispiels wollen wir demonstrieren, wie wir die Werte eines DataFrames in den numerischen Typ umwandeln können.

Methode pandas.to_numeric()

Syntax

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

Sie konvertiert das als arg übergebene Argument in den numerischen Typ. Standardmäßig wird das arg in int64 oder float64 konvertiert. Wir können den Wert für den Parameter downcast setzen, um das arg in andere Datentypen zu konvertieren.

Konvertieren von Zeichenkette-Werten eines Pandas DataFrame in den numerischen Typ mit der Methode 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)

Ausgabe:

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

Sie konvertiert den Datentyp der Spalte Cost des items_df von object in int64.

Konvertieren von Zeichenkette-Werten des Pandas DataFrame in den numerischen Typ mit anderen Zeichen darin

Wenn wir eine Spalte mit Werten, die einige Zeichen enthalten, in einen numerischen Typ konvertieren wollen, erhalten wir die Fehlermeldung ValueError: Unable to parse string. In solchen Fällen können wir alle nicht-numerischen Zeichen entfernen und dann eine Typkonvertierung durchführen.

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)

Ausgabe:

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

Das Zeichen $, das den Werten der Spalte Cost angehängt ist, wird entfernt und dann werden diese Werte mit der Methode pandas.to_numeric() in den numerischen Typ konvertiert.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Verwandter Artikel - Pandas Data Type