Comment créer une nouvelle colonne basée sur une condition dans Pandas
Souvent, vous souhaiterez peut-être créer une nouvelle colonne dans un DataFrame pandas en fonction de certaines conditions.
Ce didacticiel fournit plusieurs exemples de la manière de procéder à l’aide du DataFrame suivant :
import pandas as pd import numpy as np #create DataFrame df = pd.DataFrame({'rating': [90, 85, 82, 88, 94, 90, 76, 75, 87, 86], 'points': [25, 20, 14, 16, 27, 20, 12, 15, 14, 19], 'assists': [5, 7, 7, 8, 5, 7, 6, 9, 9, 5], 'rebounds': [11, 8, 10, 6, 6, 9, 6, 10, 10, 7]}) #view DataFrame df rating points assists rebounds 0 90 25 5 11 1 85 20 7 8 2 82 14 7 10 3 88 16 8 6 4 94 27 5 6 5 90 20 7 9 6 76 12 6 6 7 75 15 9 10 8 87 14 9 10 9 86 19 5 7
Exemple 1 : créer une nouvelle colonne avec des valeurs binaires
Le code suivant montre comment créer une nouvelle colonne appelée « Bon » où la valeur est « oui » si les points d’une ligne donnée sont supérieurs à 20 et « non » sinon :
#create new column titled 'Good' df['Good'] = np.where(df['points']>20, 'yes', 'no') #view DataFrame df rating points assists rebounds Good 0 90 25 5 11 yes 1 85 20 7 8 no 2 82 14 7 10 no 3 88 16 8 6 no 4 94 27 5 6 yes 5 90 20 7 9 no 6 76 12 6 6 no 7 75 15 9 10 no 8 87 14 9 10 no 9 86 19 5 7 no
Exemple 2 : créer une nouvelle colonne avec plusieurs valeurs
Le code suivant montre comment créer une nouvelle colonne appelée « Bon » où la valeur est :
- « Oui » si les points ≥ 25
- « Peut-être » si 15 ≤ points < 25
- « Non » si les points < 15
#define function for classifying players based on points def f(row): if row['points'] < 15: val = 'no' elif row['points'] < 25: val = 'maybe' else: val = 'yes' return val #create new column 'Good' using the function above df['Good'] = df.apply(f, axis=1) #view DataFrame df rating points assists rebounds Good 0 90 25 5 11 yes 1 85 20 7 8 maybe 2 82 14 7 10 no 3 88 16 8 6 maybe 4 94 27 5 6 yes 5 90 20 7 9 maybe 6 76 12 6 6 no 7 75 15 9 10 maybe 8 87 14 9 10 no 9 86 19 5 7 maybe
Exemple 3 : créer une nouvelle colonne basée sur une comparaison avec une colonne existante
Le code suivant montre comment créer une nouvelle colonne appelée « assist_more » où la valeur est :
- « Oui » si passes décisives > rebonds.
- ‘Non’ sinon.
#create new column titled 'assist_more' df['assist_more'] = np.where(df['assists']>df['rebounds'], 'yes', 'no') #view DataFrame df rating points assists rebounds assist_more 0 90 25 5 11 no 1 85 20 7 8 no 2 82 14 7 10 no 3 88 16 8 6 yes 4 94 27 5 6 no 5 90 20 7 9 no 6 76 12 6 6 no 7 75 15 9 10 no 8 87 14 9 10 no 9 86 19 5 7 no
Vous pouvez trouver plus de didacticiels Python ici .