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

Aggiungi un commento

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