Ersetzen von Spaltenwerten in Pandas DataFrame
-
Verwenden Sie die Methode
map()
, um Spaltenwerte in Pandas zu ersetzen -
Die Methode
loc
zum Ersetzen von Spaltenwerten in Pandas verwenden - Ersetzen von Spaltenwerten mit Bedingungen in Pandas DataFrame
-
Verwenden der Methode
replace()
zum Ändern von Werten
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:
arg
: dieser Parameter wird für das Mapping einerSeries
verwendet. Es könnte eine Sammlung oder eine Funktion sein.na_action
: Er wird für den Umgang mitNaN
(Not a Number) Werten verwendet. Sie kann zwei Werte annehmen -None
oderignore
.None
ist die Vorgabe, undmap()
wendet die Zuordnung auf alle Werte an, einschließlich derNan
-Werte;ignore
lässt dieNaN
-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:
condition
: dieser Parameter gibt die Werte zurück, die die Bedingung wahr machencolumn_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
- Wie man Pandas DataFrame-Spaltenüberschriften als Liste erhält
- Pandas DataFrame-Spalte löschen
- Wie man DataFrame-Spalte in Datetime in Pandas konvertiert
- Wie konvertiert man eine Fließkommazahl in eine Ganzzahl in Pandas DataFrame
- Wie man Pandas-DataFrame nach den Werten einer Spalte sortiert
- Wie erhält man das Aggregat der Pandas gruppenweise und sum