Maison > développement back-end > Tutoriel Python > Comment combiner efficacement des trames de données groupées à l'aide de df.groupby().transform() ?

Comment combiner efficacement des trames de données groupées à l'aide de df.groupby().transform() ?

Barbara Streisand
Libérer: 2024-10-19 12:29:29
original
348 Les gens l'ont consulté

How to Combine Grouped Dataframes Effectively Using df.groupby().transform()?

Combinaison de dataframes Groupby avec df.groupby().transform()

Lorsqu'il s'agit de dataframes pandas, il est souvent nécessaire d'effectuer des opérations sur des sous-ensembles de données, tels que le regroupement de valeurs et le calcul de statistiques. Cependant, il peut s'avérer fastidieux de combiner les résultats de ces opérations dans le dataframe d'origine.

Pour relever ce défi, envisagez le scénario suivant :

Problème : Vous avoir un dataframe avec deux colonnes, « c » et « type ». Votre objectif est de compter les valeurs de « type » pour chaque « c » et d'ajouter une colonne au dataframe avec la taille de « c ».

Approche 1 (à l'aide de Map) :

Une approche consiste à utiliser la fonction map(), qui applique une fonction à chaque valeur d'une série. Dans ce cas, vous pouvez mapper la taille de « c » aux valeurs « c » correspondantes dans le dataframe :

<code class="python">g = df.groupby('c')['type'].value_counts().reset_index(name='t')
a = df.groupby('c').size().reset_index(name='size')
a.index = a['c']
g['size'] = g['c'].map(a['size'])</code>
Copier après la connexion

Cette approche fonctionne mais implique plusieurs étapes et un alignement manuel de l'index.

Approche 2 (Utilisation de Transform) :

Une solution plus simple consiste à utiliser la fonction transform() de pandas, qui applique une fonction à chaque ligne d'une trame de données, renvoyant une série alignée sur l'index d'origine. Vous pouvez utiliser transform pour ajouter la taille de « c » directement au dataframe :

<code class="python">g = df.groupby('c')['type'].value_counts().reset_index(name='t')
g['size'] = df.groupby('c')['type'].transform('size')</code>
Copier après la connexion

Cette approche élimine le besoin de calculs de taille séparés et d'alignement d'index, ce qui donne une solution plus concise et efficace.

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
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