Maison > développement back-end > Tutoriel Python > Comment appliquer plusieurs fonctions à plusieurs colonnes dans Pandas GroupBy ?

Comment appliquer plusieurs fonctions à plusieurs colonnes dans Pandas GroupBy ?

Barbara Streisand
Libérer: 2024-12-08 05:53:10
original
520 Les gens l'ont consulté

How to Apply Multiple Functions to Multiple Columns in Pandas GroupBy?

Comment appliquer plusieurs fonctions à plusieurs colonnes groupées

Les opérations Groupby dans Pandas permettent l'agrégation de données en fonction de colonnes ou de clés spécifiques. Cependant, lorsque vous travaillez avec des ensembles de données complexes, il peut être nécessaire d'effectuer plusieurs opérations sur différentes colonnes au sein des données groupées.

Utilisation d'un dictionnaire pour les regroupements de séries

Pour un objet groupby Series, vous pouvez utiliser un dictionnaire pour spécifier plusieurs fonctions et noms de colonnes de sortie, comme indiqué ci-dessous :

grouped['D'].agg({'result1' : np.sum,
   .....:                   'result2' : np.mean})
Copier après la connexion

Cette approche, cependant, ne fonctionne pas pour les objets groupby DataFrame, car il s'attend à ce que les clés du dictionnaire représentent les noms de colonnes pour l'application des fonctions.

Fonctions personnalisées avec Apply

Pour résoudre cette limitation, vous peut exploiter la méthode apply, qui transmet implicitement un DataFrame à la fonction appliquée. En définissant une fonction personnalisée et en renvoyant une série ou une série MultiIndex, vous pouvez effectuer plusieurs opérations sur plusieurs colonnes au sein de chaque groupe :

Renvoyer une série :

def f(x):
    d = {}
    d['a_sum'] = x['a'].sum()
    d['a_max'] = x['a'].max()
    d['b_mean'] = x['b'].mean()
    d['c_d_prodsum'] = (x['c'] * x['d']).sum()
    return pd.Series(d, index=['a_sum', 'a_max', 'b_mean', 'c_d_prodsum'])

df.groupby('group').apply(f)
Copier après la connexion

Renvoyer une série avec MultiIndex :

def f_mi(x):
        d = []
        d.append(x['a'].sum())
        d.append(x['a'].max())
        d.append(x['b'].mean())
        d.append((x['c'] * x['d']).sum())
        return pd.Series(d, index=[['a', 'a', 'b', 'c_d'], 
                                   ['sum', 'max', 'mean', 'prodsum']])

df.groupby('group').apply(f_mi)
Copier après la connexion

Cette approche offre un moyen flexible d'effectuer des agrégations sur des données groupées, permettant de multiples opérations sur plusieurs colonnes au sein de chaque groupe.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal