Pandas : comment utiliser Apply & Lambda ensemble
Vous pouvez utiliser la syntaxe de base suivante pour appliquer une fonction lambda à un DataFrame pandas :
df['col'] = df['col'].apply(lambda x: 'value1' if x < 20 else 'value2')
Les exemples suivants montrent comment utiliser cette syntaxe en pratique avec le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'], 'points': [18, 22, 19, 14, 14, 11, 20, 28], 'assists': [5, 7, 7, 9, 12, 9, 9, 4]}) #view DataFrame print(df) team points assists 0 A 18 5 1 B 22 7 2 C 19 7 3 D 14 9 4 E 14 12 5 F 11 9 6 G 20 9 7 H 28 4
Exemple 1 : utilisez Apply et Lambda pour créer une nouvelle colonne
Le code suivant montre comment utiliser apply et lambda pour créer une nouvelle colonne dont les valeurs dépendent des valeurs d’une colonne existante :
#create new column called 'status'
df['status'] = df['points'].apply(lambda x: 'Bad' if x < 20 else 'Good')
#view updated DataFrame
print(df)
team points assists status
0 A 18 5 Bad
1 B 22 7 Good
2 C 19 7 Bad
3 D 14 9 Bad
4 E 14 12 Bad
5 F 11 9 Bad
6 G 20 9 Good
7 H 28 4 Good
Dans cet exemple, nous avons créé une nouvelle colonne appelée status qui a pris les valeurs suivantes :
- ‘ Mauvais ‘ si la valeur dans la colonne des points était inférieure à 20.
- ‘ Bon ‘ si la valeur dans la colonne des points était supérieure ou égale à 20.
Exemple 2 : utilisez Apply et Lambda pour modifier une colonne existante
Le code suivant montre comment utiliser apply et lambda pour modifier une colonne existante dans le DataFrame :
#modify existing 'points' column
df['points'] = df['points'].apply(lambda x: x/2 if x < 20 else x*2)
#view updated DataFrame
print(df)
team points assists
0 A 9.0 5
1 B 44.0 7
2 C 9.5 7
3 D 7.0 9
4 E 7.0 12
5 F 5.5 9
6 G 40.0 9
7 H 56.0 4
Dans cet exemple, nous avons modifié les valeurs de la colonne de points existante en utilisant la règle suivante dans la fonction lambda :
- Si la valeur est inférieure à 20, divisez la valeur par 2.
- Si la valeur est supérieure ou égale à 20, multipliez la valeur par 2.
Grâce à cette fonction lambda, nous avons pu modifier les valeurs de la colonne de points existante.
Ressources additionnelles
Les didacticiels suivants expliquent comment exécuter d’autres fonctions courantes dans les pandas :
Comment appliquer une fonction à Pandas Groupby
Comment remplir NaN avec les valeurs d’une autre colonne dans Pandas