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