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 objet Series représentant chaque ligne du DataFrame. Vous pouvez accéder aux colonnes de cette ligne en utilisant la syntaxe row['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.