Pandas : comment appliquer une fonction à chaque ligne dans DataFrame
Vous pouvez utiliser la syntaxe de base suivante pour appliquer une fonction à chaque ligne d’un DataFrame pandas :
df['new_col'] = df.apply(lambda x: some function, axis=1)
Cette syntaxe applique une fonction à chaque ligne d’un DataFrame pandas et renvoie les résultats dans une nouvelle colonne.
L’exemple suivant montre comment utiliser cette syntaxe dans la pratique.
Exemple : appliquer une fonction à chaque ligne dans DataFrame
Supposons que nous ayons le DataFrame pandas suivant :
import pandas as pd #create DataFrame df = pd.DataFrame({'A': [5, 4, 7, 9, 12, 9, 9, 4], 'B': [10, 8, 10, 6, 6, 5, 9, 12]}) #view DataFrame print(df) A B 0 5 10 1 4 8 2 7 10 3 9 6 4 12 6 5 9 5 6 9 9 7 4 12
Supposons maintenant que nous souhaitions appliquer une fonction qui multiplie les valeurs de la colonne A et de la colonne B, puis divise par 2.
Nous pouvons utiliser la syntaxe suivante pour appliquer cette fonction à chaque ligne du DataFrame :
#create new column by applying function to each row in DataFrame
df['z'] = df.apply(lambda x: x['A'] * x['B'] / 2, axis=1)
#view updated DataFrame
print(df)
A B z
0 5 10 25.0
1 4 8 16.0
2 7 10 35.0
3 9 6 27.0
4 12 6 36.0
5 9 5 22.5
6 9 9 40.5
7 4 12 24.0
La colonne z affiche les résultats de la fonction.
Par exemple:
- Première rangée : A * B / 2 = 5 * 10 / 2 = 25
- Deuxième rangée : A * B / 2 = 4 * 8 / 2 = 16
- Troisième rangée : A * B / 2 = 7 * 10 / 2 = 35
Et ainsi de suite.
Vous pouvez utiliser une syntaxe similaire avec lambda pour appliquer n’importe quelle fonction de votre choix à chaque ligne d’un DataFrame pandas.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans les pandas :
Comment appliquer une fonction à Pandas Groupby
Comment effectuer une somme GroupBy dans Pandas
Comment utiliser Groupby et Plot dans Pandas