Pandas : comment créer une colonne booléenne basée sur la condition
Vous pouvez utiliser la syntaxe de base suivante pour créer une colonne booléenne basée sur une condition dans un DataFrame pandas :
df['boolean_column'] = np.where(df['some_column'] > 15, True, False)
Cette syntaxe particulière crée une nouvelle colonne booléenne avec deux valeurs possibles :
- Vrai si la valeur dans some_column est supérieure à 15.
- False si la valeur dans some_column est inférieure ou égale à 15.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : créer une colonne booléenne basée sur la condition dans Pandas
Supposons que nous ayons le DataFrame pandas suivant qui contient des informations sur divers joueurs de basket-ball :
import pandas as pd #create DataFrame 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 A 5 1 A 17 2 A 7 3 A 19 4 B 12 5 B 13 6 B 9 7 B 24
Nous pouvons utiliser le code suivant pour créer une nouvelle colonne appelée good_player qui renvoie True si la valeur dans la colonne points est supérieure à 15 ou False sinon :
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 A 5 False
1 A 17 True
2 A 7 False
3 A 19 True
4 B 12 False
5 B 13 False
6 B 9 False
7 B 24 True
Notez que la nouvelle colonne appelée good_player ne contient que deux valeurs : True ou False .
Nous pouvons utiliser la fonction dtypes() pour vérifier que la nouvelle colonne good_player est bien une colonne booléenne :
#display data type of good_player column
df['good_player'].dtype
dtype('bool')
La nouvelle colonne good_player est bien une colonne booléenne.
Notez également que vous pouvez renvoyer des valeurs numériques telles que 1 et 0 au lieu de True et False si vous le souhaitez :
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 A 5 0
1 A 17 1
2 A 7 0
3 A 19 1
4 B 12 0
5 B 13 0
6 B 9 0
7 B 24 1
La colonne good_player contient désormais un 1 si la valeur correspondante dans la colonne points est supérieure à 15.
Sinon, il contient la valeur 0 .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment sélectionner des lignes selon plusieurs conditions dans Pandas
Comment créer une nouvelle colonne basée sur une condition dans Pandas
Comment filtrer un DataFrame Pandas sur plusieurs conditions