Panda: crea una nuova colonna utilizzando più condizioni if else


È possibile utilizzare la seguente sintassi per creare una nuova colonna in un DataFrame panda utilizzando più condizioni 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)

Questo particolare esempio crea una colonna chiamata new_column i cui valori sono basati sui valori di colonna1 e colonna2 nel DataFrame.

L’esempio seguente mostra come utilizzare questa sintassi nella pratica.

Esempio: creare una nuova colonna utilizzando più condizioni If Else in Panda

Supponiamo di avere il seguente DataFrame panda che contiene informazioni su vari giocatori di basket:

 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

Ora diciamo di voler creare una nuova colonna chiamata classe che classifichi ogni giocatore in uno dei seguenti quattro gruppi:

  • Bad_A se la squadra è A e punti < 20
  • Buono_A se la squadra è A e punti ≥ 20
  • Bad_B se la squadra è B e punti < 20
  • Buono_B se la squadra è B e punti ≥ 20

Possiamo usare la seguente sintassi per fare questo:

 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

La nuova colonna chiamata classe mostra la classifica di ciascun giocatore in base ai valori nelle colonne squadra e punti .

Nota : puoi trovare la documentazione completa per la funzione NumPy select() qui .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre attività comuni nei panda:

Panda: come creare una colonna booleana basata sulla condizione
Panda: come contare i valori in una colonna con condizione
Panda: come usare Groupby e contare in modo condizionale

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *