Pandas: erstellen sie eine neue spalte mit mehreren if else-bedingungen


Sie können die folgende Syntax verwenden, um eine neue Spalte in einem Pandas-DataFrame mit mehreren if else-Bedingungen zu erstellen:

 #define conditions
conditions = [
    (df[' column1 '] == ' A ') & (df[' column2 '] < 20 ),
    (df[' column1 '] == ' A ') & (df[' column2 '] >= 20 ),
    (df[' column1 '] == ' B ') & (df[' column2 '] < 20 ),
    (df[' column1 '] == ' B ') & (df[' column2 '] >= 20 )
]

#define results
results = [' result1 ', ' result2 ', ' result3 ', ' result4 ']

#create new column based on conditions in column1 and column2
df[' new_column '] = np. select (conditions, results)

In diesem speziellen Beispiel wird eine Spalte namens new_column erstellt, deren Werte auf den Werten von Spalte1 und Spalte2 im DataFrame basieren.

Das folgende Beispiel zeigt, wie diese Syntax in der Praxis verwendet wird.

Beispiel: Erstellen Sie eine neue Spalte mit mehreren If-Else-Bedingungen in Pandas

Angenommen, wir haben den folgenden Pandas-DataFrame, der Informationen über verschiedene Basketballspieler enthält:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
                   ' points ': [15, 18, 22, 24, 12, 17, 20, 28]})

#view DataFrame
print (df)

  team points
0 to 15
1 to 18
2 to 22
3 to 24
4 B 12
5 B 17
6 B 20
7 B 28

Nehmen wir nun an, wir möchten eine neue Spalte namens „class“ erstellen, die jeden Spieler in eine der folgenden vier Gruppen einordnet:

  • Bad_A , wenn das Team A ist und Punkte < 20
  • Gut_A , wenn das Team A ist und Punkte ≥ 20
  • Bad_B , wenn das Team B ist und Punkte < 20
  • Gut_B , wenn das Team B ist und Punkte ≥ 20 hat

Wir können dazu die folgende Syntax verwenden:

 import numpy as np

#define conditions
conditions = [
    (df[' team '] == ' A ') & (df[' points '] < 20 ),
    (df[' team '] == ' A ') & (df[' points '] >= 20 ),
    (df[' team '] == ' B ') & (df[' points '] < 20 ),
    (df[' team '] == ' B ') & (df[' points '] >= 20 )
]

#define results
results = [' Bad_A ', ' Good_A ', ' Bad_B ', ' Good_B ']

#create new column based on conditions in column1 and column2
df[' class '] = np. select (conditions, results)

#view updated DataFrame
print (df)

  team points class
0 A 15 Bad_A
1 A 18 Bad_A
2 A 22 Good_A
3 A 24 Good_A
4 B 12 Bad_B
5 B 17 Bad_B
6 B 20 Good_B
7 B 28 Good_B

Die neue Spalte namens „ Klasse“ zeigt die Rangliste jedes Spielers basierend auf den Werten in den Spalten „ Team “ und „Punkte“ an.

Hinweis : Die vollständige Dokumentation für die NumPy-Funktion select() finden Sie hier .

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie Sie andere häufige Aufgaben in Pandas ausführen:

Pandas: So erstellen Sie eine boolesche Spalte basierend auf der Bedingung
Pandas: So zählen Sie Werte in einer Spalte mit Bedingung
Pandas: Wie man Groupby verwendet und bedingt zählt

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert