Maison >développement back-end >Tutoriel Python >Pourquoi la transformation ne fonctionne-t-elle pas pour toutes les opérations Groupby ?

Pourquoi la transformation ne fonctionne-t-elle pas pour toutes les opérations Groupby ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-11 14:39:03623parcourir

Why Doesn't Transform Work for All Groupby Operations?

Pourquoi toutes les opérations groupby ne fonctionnent pas avec transform

Le code suivant fonctionne :

df.groupby('A').apply(lambda x: (x['C'] - x['D']).mean())

mais pas ce qui suit :

df.groupby('A').transform(lambda x: (x['C'] - x['D']).mean())

La raison en est que apply et transform fonctionnent différemment.

apply

  • La méthode apply() applique une fonction à chaque groupe dans un DataFrame.
  • La fonction peut prendre un seul argument, qui est le groupe, ou elle peut prendre plusieurs arguments, qui sont les colonnes du groupe.
  • La fonction peut renvoyer un seul valeur, ou elle peut renvoyer une série ou un DataFrame.
  • Si la fonction renvoie une seule valeur, alors le résultat sera une série.
  • Si la fonction renvoie une série ou un DataFrame, alors la le résultat sera un DataFrame.

transform

  • La méthode transform() applique une fonction à chaque ligne d'un groupe.
  • La fonction peut prendre un seul argument, qui est la ligne, ou elle peut prendre plusieurs arguments, qui sont les colonnes de la ligne.
  • La fonction doit renvoyer une seule valeur.
  • Le résultat de la fonction sera une série.

Dans l'exemple de code, la méthode apply() est utilisée pour calculer la moyenne de la différence entre les colonnes C et D pour chaque groupe.

  • La méthode transform() ne peut pas être utilisée pour calculer cette valeur car la fonction renvoie une série, pas une seule valeur.

Pour calculer la moyenne de la différence entre le C et D pour chaque groupe utilisant la méthode transform(), la fonction doit être modifiée pour renvoyer une seule valeur.

  • Cela peut être fait en utilisant la méthode Mean() sur la série renvoyée par le fonction.
  • Le code suivant montre comment procéder :
df.groupby('A').transform(lambda x: (x['C'] - x['D']).mean())

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!

Déclaration:
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