Pandas: so ersetzen sie werte in einer spalte basierend auf der bedingung
Sie können die folgende grundlegende Syntax verwenden, um Werte in einer Spalte eines Pandas-DataFrames basierend auf einer Bedingung zu ersetzen:
#replace values in 'column1' that are greater than 10 with 20 df. loc [df[' column1 '] > 10, ' column1 '] = 20
Die folgenden Beispiele zeigen, wie Sie diese Syntax in der Praxis anwenden können.
Beispiel 1: Werte in einer Spalte basierend auf einer Bedingung ersetzen
Angenommen, wir haben den folgenden Pandas-DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [5, 7, 7, 9, 12, 13, 9, 14], ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]}) #view DataFrame df team position points assists 0 A G 5 3 1 A G 7 8 2 A F 7 2 3 A F 9 6 4 B G 12 6 5 B G 13 5 6 B F 9 9 7 B F 14 5
Mit dem folgenden Code können wir jeden Wert in der Spalte „Punkte“, der größer als 10 ist, durch einen Wert von 20 ersetzen:
#replace any values in 'points' column greater than 10 with 20
df. loc [df[' points '] > 10, ' points '] = 20
#view updated DataFrame
df
team position points assists
0 A G 5 3
1 A G 7 8
2 A F 7 2
3 A F 9 6
4 B G 20 6
5 B G 20 5
6 B F 9 9
7 B F 20 5
Beachten Sie, dass jeder der drei Werte in der Spalte „Punkte“, die größer als 10 sind, durch den Wert 20 ersetzt wurde.
Beispiel 2: Werte in einer Spalte basierend auf mehreren Bedingungen ersetzen
Angenommen, wir haben den folgenden Pandas-DataFrame:
import pandas as pd #createDataFrame df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'], ' position ': ['G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'], ' points ': [5, 7, 7, 9, 12, 13, 9, 14], ' assists ': [3, 8, 2, 6, 6, 5, 9, 5]}) #view DataFrame df team position points assists 0 A G 5 3 1 A G 7 8 2 A F 7 2 3 A F 9 6 4 B G 12 6 5 B G 13 5 6 B F 9 9 7 B F 14 5
Wir können den folgenden Code verwenden, um jeden Wert in der Spalte „Position“, bei dem die Punkte weniger als 10 oder die Assists weniger als 5 betragen, durch die Zeichenfolge „Bad“ zu ersetzen:
#replace string in 'position' column with 'bad' if points < 10 or assists < 5
df. loc [(df[' points '] < 10) | (df[' assists '] < 5), ' position '] = ' Bad '
#view updated DataFrame
df
team position points assists
0 A Bad 5 3
1 A Bad 7 8
2 A Bad 7 2
3 A Bad 9 6
4 B G 20 6
5 B G 20 5
6 B Bad 9 9
7 B F 20 5
Ebenso können wir den folgenden Code verwenden, um jeden Wert in der Spalte „Position“, bei dem die Punkte weniger als 10 und die Durchgänge weniger als 5 betragen, durch die Zeichenfolge „Bad“ zu ersetzen:
#replace string in 'position' column with 'bad' if points < 10 and assists < 5
df. loc [(df[' points '] < 10) & (df[' assists '] < 5), ' position '] = ' Bad '
#view updated DataFrame
df
team position points assists
0 A Bad 5 3
1 A G 7 8
2 A Bad 7 2
3 A F 9 6
4 B G 12 6
5 B G 13 5
6 B F 9 9
7 B F 14 5
Beachten Sie, dass der „Position“-Wert der beiden Zeilen, in denen es weniger als 10 Punkte und weniger als 5 Assists gab, durch die Zeichenfolge „Bad“ ersetzt wurde.
Zusätzliche Ressourcen
In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in Pandas ausgeführt werden:
So wählen Sie Zeilen basierend auf mehreren Bedingungen in Pandas aus
So erstellen Sie eine neue Spalte basierend auf einer Bedingung in Pandas
So filtern Sie einen Pandas DataFrame nach mehreren Bedingungen