Appliquer apply() sur plusieurs colonnes
La méthode apply() peut être utilisée sur plusieurs colonnes d’un DataFrame en spécifiant axis=1, ce qui permet d’appliquer une fonction à chaque ligne du DataFrame (au lieu de chaque colonne, comme c’est le cas avec axis=0). Cette approche est utile lorsque l’on souhaite effectuer des transformations qui dépendent de plusieurs colonnes simultanément.
Fonctions :
-
df.apply(lambda row: …, axis=1)
La méthode apply() permet également d'appliquer une fonction sur plusieurs colonnes d'un DataFrame. En utilisant l'argument axis=1, vous indiquez à pandas que la fonction doit être appliquée sur chaque ligne (et non sur chaque colonne comme par défaut). Cela vous permet d'accéder à plusieurs colonnes en même temps dans une ligne et d'effectuer des transformations complexes.
Importation :
import pandas as pd
Attributs :
Paramètre Type Description Valeur par défaut df.apply(fonction, axis=1)
function Applique la fonction à chaque ligne (l'argument axis=1
spécifie l'opération sur les lignes).None
lambda row: ...
lambda function La fonction (ici une fonction lambda) qui prend chaque ligne comme entrée et effectue une transformation. None
row['colonne']
Series Accès aux différentes colonnes de chaque ligne pour effectuer des calculs. None
Exemple de code :
import pandas as pd # Exemple de DataFrame data = { 'produit': ['A', 'B', 'C', 'D'], 'prix': [10, 20, 30, 40], 'quantité': [1, 2, 3, 4] } df = pd.DataFrame(data) # Appliquer une fonction pour calculer la valeur totale (prix * quantité) pour chaque produit df['valeur_totale'] = df.apply(lambda row: row['prix'] * row['quantité'], axis=1) print(df)
Explication du code :
- DataFrame : Ce DataFrame contient des informations sur des produits, leurs prix et leurs quantités.
- Transformation : La fonction
lambda row: row['prix'] * row['quantité']
est appliquée sur chaque ligne. Elle multiplie la valeur de la colonne'prix'
par celle de'quantité'
pour obtenir la valeur totale de chaque produit. - Résultat : Une nouvelle colonne
'valeur_totale'
est ajoutée au DataFrame, qui contient le produit de'prix'
et'quantité'
pour chaque ligne.
Remarque :
-
Accès aux colonnes dans
apply()
: Dans la fonction lambda,row
est un objetSeries
représentant chaque ligne du DataFrame. Vous pouvez accéder aux colonnes de cette ligne en utilisant la syntaxerow['colonne']
. -
Transformation complexe : Cette méthode est particulièrement utile pour appliquer des transformations complexes qui nécessitent l'utilisation de plusieurs colonnes simultanément.
- Appliquer sur des lignes conditionnellement : Vous pouvez également utiliser des conditions dans la fonction appliquée.