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