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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *