Ersetzen von Spaltenwerten in Pandas DataFrame

Mohamed Ayman 10 Oktober 2023
  1. Verwenden Sie die Methode map(), um Spaltenwerte in Pandas zu ersetzen
  2. Die Methode loc zum Ersetzen von Spaltenwerten in Pandas verwenden
  3. Ersetzen von Spaltenwerten mit Bedingungen in Pandas DataFrame
  4. Verwenden der Methode replace() zum Ändern von Werten
Ersetzen von Spaltenwerten in Pandas DataFrame

In diesem Tutorial stellen wir vor, wie man Spaltenwerte in Pandas DataFrame ersetzen kann. Wir werden drei verschiedene Funktionen behandeln, um Spaltenwerte einfach zu ersetzen.

Verwenden Sie die Methode map(), um Spaltenwerte in Pandas zu ersetzen

Die Spalten von DataFrame sind Pandas Series. Wir können die Methode map verwenden, um jeden Wert in einer Spalte durch einen anderen Wert zu ersetzen.

Series.map() Syntax

Series.map(arg, na_action=None)
  • Parameter:
  1. arg: dieser Parameter wird für das Mapping einer Series verwendet. Es könnte eine Sammlung oder eine Funktion sein.
  2. na_action: Er wird für den Umgang mit NaN (Not a Number) Werten verwendet. Sie kann zwei Werte annehmen - None oder ignore. None ist die Vorgabe, und map() wendet die Zuordnung auf alle Werte an, einschließlich der Nan-Werte; ignore lässt die NaN-Werte so, wie sie in der Spalte sind, ohne sie an die Zuordnungsmethode zu übergeben.

Es gibt eine Series mit dem gleichen Index zurück.

Nehmen wir nun ein Beispiel für die Implementierung der map-Methode. Wir werden in den folgenden Beispielen den gleichen DataFrame verwenden.

import pandas as pd
import numpy as np

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])

print(df)

Ausgabe:

      name    city
0  michael  berlin
1    louis   paris
2     jack    roma
3  jasmine     NaN

Ersetzen von Spaltenwerten durch Collection in Pandas DataFrame

import pandas as pd
import numpy as np

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])

# replace column values with collection

df["city"] = df["city"].map(
    {"berlin": "dubai", "paris": "moscow", "roma": "milan", np.nan: "NY"},
    na_action=None,
)

print(df)

Ausgabe:

      name    city
0  michael   dubai
1    louis  moscow
2     jack   milan
3  jasmine      NY

Die ursprünglichen Spaltenwerte des DataFrame city werden durch die neuen Werte des Dictionaries als ersten Parameter in der Methode map() ersetzt.

Spaltenwerte durch Funktion in Pandas DataFrame ersetzen

import pandas as pd
import numpy as np

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])

# replace column values with function

df["city"] = df["city"].map("I am from {}".format)

print(df)

Ausgabe:

      name              city
0  michael  I am from berlin
1    louis   I am from paris
2     jack    I am from roma
3  jasmine     I am from nan

Die na_action ist standardmäßig None, deshalb wird auch das NaN in der ursprünglichen Spalte durch die neue Zeichenkette I am from nan ersetzt.

Wenn Sie es vorziehen, dass NaN erhalten bleibt, aber nicht ersetzt wird, können Sie die na_action auf ignore setzen.

import pandas as pd
import numpy as np

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "city": ["berlin", "paris", "roma", np.nan],
}
df = pd.DataFrame(data, columns=["name", "city"])

# replace column values excluding NaN

df["city"] = df["city"].map("I am from {}".format, na_action="ignore")

print(df)

Ausgabe:

      name              city
0  michael  I am from berlin
1    louis   I am from paris
2     jack    I am from roma
3  jasmine               NaN

Die Methode loc zum Ersetzen von Spaltenwerten in Pandas verwenden

Eine weitere Möglichkeit, den Wert einer Spalte im Pandas DataFrame zu ersetzen, ist die Methode loc() des DataFrame. Die Methode loc() greift auf die Werte über ihre Bezeichnungen zu.

DataFrame.loc[] Syntax

pandas.DataFrame.loc[condition, column_label] = new_value
  • Parameter:
  1. condition: dieser Parameter gibt die Werte zurück, die die Bedingung wahr machen
  2. column_label: mit diesem Parameter wird die zu aktualisierende Zielspalte angegeben

Nachdem wir den Wert durch die Parameter bestimmt haben, aktualisieren wir ihn auf neuer_wert.

Nehmen wir nun ein Beispiel für die Implementierung der Methode loc. Wir werden den untenstehenden DataFrame als Beispiel verwenden.

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "grades": [30, 70, 40, 80],
    "result": ["N/A", "N/A", "N/A", "N/A"],
}

df = pd.DataFrame(data, columns=["name", "grades", "result"])

print(df)

Ausgabe:

      name  grades result
0  michael      30    N/A
1    louis      70    N/A
2     jack      40    N/A
3  jasmine      80    N/A

Ersetzen von Spaltenwerten mit Bedingungen in Pandas DataFrame

Wir können boolesche Bedingungen verwenden, um die anvisierten Elemente zu spezifizieren.

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "grades": [30, 70, 40, 80],
    "result": ["N/A", "N/A", "N/A", "N/A"],
}

df = pd.DataFrame(data, columns=["name", "grades", "result"])

df.loc[df.grades > 50, "result"] = "success"

df.loc[df.grades < 50, "result"] = "fail"

print(df)

Ausgabe:

      name  grades   result
0  michael      30     fail
1    louis      70  success
2     jack      40     fail
3  jasmine      80  success

df.loc[df.grades>50, 'result']='success' ersetzt die Werte in der Spalte grades durch sucess, wenn der Wert größer als 50 ist.

df.loc[df.grades<50,'result']='fail' ersetzt die Werte in der Spalte grades durch fail, wenn die Werte kleiner als 50 sind.

Verwenden der Methode replace() zum Ändern von Werten

Eine weitere Möglichkeit, Spaltenwerte in Pandas DataFrame zu ersetzen, ist die Methode Series.replace().

Series.replace() Syntax

  • Ersetzen eines einzelnen Wertes
df[column_name].replace([old_value], new_value)
  • Mehrere Werte durch denselben Wert ersetzen
df[column_name].replace([old_value1, old_value2, old_value3], new_value)
  • Mehrere Werte durch mehrere Werte ersetzen
df[column_name].replace(
    [old_value1, old_value2, old_value3], [new_value1, new_value2, new_value3]
)
  • Ersetze einen Wert durch einen neuen Wert für den gesamten DataFrame
df.replace([old_value], new_value)

Für die weiteren Beispiele verwenden wir den unten stehenden DataFrame.

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}

df = pd.DataFrame(data, columns=["name", "salary"])

print(df)

Ausgabe:

      name  salary
0  michael     700
1    louis     800
2     jack    1000
3  jasmine    1200

Ersetzen von Spaltenwerten durch mehrere Werte in Pandas DataFrame

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}

df = pd.DataFrame(data, columns=["name", "salary"])

df["name"] = df["name"].replace(["michael", "louis"], ["karl", "lionel"])

print(df)

Ausgabe:

      name  salary
0     karl     700
1   lionel     800
2     jack    1000
3  jasmine    1200

Spaltenwerte durch nur den gleichen Wert im Pandas DataFrame ersetzen

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}

df = pd.DataFrame(data, columns=["name", "salary"])

df["salary"] = df["salary"].replace([1000, 1200], 1500)

print(df)

Ausgabe:

      name  salary
0     karl     700
1   lionel     800
2     jack    1500
3  jasmine    1500

Spaltenwert durch einen Wert im Pandas-DataFrame ersetzen

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1200],
}

df = pd.DataFrame(data, columns=["name", "salary"])

df["salary"] = df["salary"].replace([700], 750)

print(df)

Ausgabe:

      name  salary
0     karl     750
1   lionel     800
2     jack    1000
3  jasmine    1200

Werte im gesamten Pandas-DataFrame ersetzen

import pandas as pd

data = {
    "name": ["michael", "louis", "jack", "jasmine"],
    "salary": [700, 800, 1000, 1000],
}

df = pd.DataFrame(data, columns=["name", "salary"])


df = df.replace([1000], 1400)

print(df)

Ausgabe:

      name  salary
0     karl     750
1   lionel     800
2     jack    1400
3  jasmine    1400

Verwandter Artikel - Pandas DataFrame