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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *