Pandy: utwórz nową kolumnę, używając wielu warunków jeśli inaczej
Możesz użyć następującej składni, aby utworzyć nową kolumnę w ramce danych pand, używając wielu warunków if else:
#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)
Ten konkretny przykład tworzy kolumnę o nazwie nowa_kolumna , której wartości opierają się na wartościach kolumny1 i kolumny2 w DataFrame.
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: utwórz nową kolumnę, używając wielu warunków if else w Pandach
Załóżmy, że mamy następującą ramkę danych pand, która zawiera informacje o różnych koszykarzach:
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
Załóżmy teraz, że chcemy utworzyć nową kolumnę o nazwie class , która klasyfikuje każdego gracza do jednej z następujących czterech grup:
- Bad_A jeśli drużyna ma klasę A i punkty < 20
- Dobra_A jeśli drużyna ma klasę A i punkty ≥ 20
- Bad_B jeśli drużyna to B i ma punkty < 20
- Good_B jeśli drużyna jest B i ma punkty ≥ 20
W tym celu możemy użyć następującej składni:
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
Nowa kolumna o nazwie klasa wyświetla ranking każdego gracza na podstawie wartości w kolumnach drużyny i punktów .
Uwaga : pełną dokumentację funkcji NumPyselect() można znaleźć tutaj .
Dodatkowe zasoby
Poniższe samouczki wyjaśniają, jak wykonywać inne typowe zadania w pandach:
Pandy: jak utworzyć kolumnę logiczną na podstawie warunku
Pandy: Jak liczyć wartości w kolumnie z warunkiem
Pandy: jak korzystać z Groupby i liczyć warunkowo