Panda: come creare una colonna booleana basata sulla condizione
È possibile utilizzare la seguente sintassi di base per creare una colonna booleana basata su condizioni in un DataFrame panda:
df[' boolean_column '] = np. where (df[' some_column '] > 15, True , False )
Questa particolare sintassi crea una nuova colonna booleana con due possibili valori:
- Vero se il valore in some_column è maggiore di 15.
- False se il valore in some_column è inferiore o uguale a 15.
L’esempio seguente mostra come utilizzare questa sintassi nella pratica.
Esempio: creare una colonna booleana basata sulla condizione in Pandas
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 ': [5, 17, 7, 19, 12, 13, 9, 24]}) #view DataFrame print (df) team points 0 to 5 1 to 17 2 to 7 3 to 19 4 B 12 5 B 13 6 B 9 7 B 24
Possiamo usare il codice seguente per creare una nuova colonna chiamata good_player che restituisce True se il valore nella colonna dei punti è maggiore di 15 o False altrimenti:
import numpy as np
#create new boolean column based on value in points column
df[' good_player '] = np. where (df[' points '] > 15, True , False )
#view updated DataFrame
print (df)
team points good_player
0 To 5 False
1 To 17 True
2 To 7 False
3 To 19 True
4 B 12 False
5 B 13 False
6 B 9 False
7 B 24 True
Tieni presente che la nuova colonna chiamata good_player contiene solo due valori: True o False .
Possiamo utilizzare la funzione dtypes() per verificare che la nuova colonna good_player sia effettivamente una colonna booleana:
#display data type of good_player column
df[' good_player ']. dtype
dtype('bool')
La nuova colonna good_player è infatti una colonna booleana.
Tieni inoltre presente che puoi restituire valori numerici come 1 e 0 invece di Vero e Falso se lo desideri:
import numpy as np
#create new boolean column based on value in points column
df[' good_player '] = np. where (df[' points '] > 15, 1 , 0 )
#view updated DataFrame
print (df)
team points good_player
0 to 5 0
1 To 17 1
2 to 7 0
3 A 19 1
4 B 12 0
5 B 13 0
6 B 9 0
7 B 24 1
La colonna good_player ora contiene un 1 se il valore corrispondente nella colonna dei punti è maggiore di 15.
Altrimenti, contiene il valore 0 .
Risorse addizionali
I seguenti tutorial spiegano come eseguire altre operazioni comuni nei panda:
Come selezionare le righe in base a più condizioni in Pandas
Come creare una nuova colonna basata su una condizione in Pandas
Come filtrare un Pandas DataFrame su più condizioni