Maison >développement back-end >Tutoriel Python >Comment joindre efficacement des valeurs groupées dans Pandas avec un délimiteur ?

Comment joindre efficacement des valeurs groupées dans Pandas avec un délimiteur ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-16 19:55:18348parcourir

How to Efficiently Join Grouped Values in Pandas with a Delimiter?

Joindre des valeurs groupées avec un délimiteur dans Pandas

Lors de l'utilisation de la fonction groupby pour regrouper des données avec plusieurs valeurs, il est courant de rencontrer le problème de concaténer ces valeurs sans délimiteur. Pour résoudre ce problème, vous pouvez utiliser la méthode agg.

Considérez le DataFrame suivant :

col | val
-----|-----
A    | Cat
A    | Tiger
B    | Ball
B    | Bat

Pour regrouper ces lignes en fonction de la colonne col et concaténer les valeurs dans la colonne val, utilisez le code suivant :

import pandas as pd
df = pd.DataFrame({'col': ['A', 'A', 'B', 'B'], 'val': ['Cat', 'Tiger', 'Ball', 'Bat']})
grouped = df.groupby('col')['val'].agg('-'.join)

Cette approche devrait donner le résultat souhaité :

col | val
-----|-----
A    | Cat-Tiger
B    | Ball-Bat

Cependant, si la méthode apply est utilisée comme alternative, cela peut conduire à un résultat inattendu avec des valeurs avec trait d'union apparaissant plusieurs fois, comme indiqué ci-dessous :

df.groupby('col')['val'].apply(lambda x: '-'.join(x))

col | val
-----|-----
A        | C-a-t-T-i-g-e-r
B          | B-a-l-l-B-a-t

Pour éviter ce problème, utilisez plutôt la méthode agg, comme démontré dans l'exemple ci-dessus.

De plus, pour convertir l'index groupé ou le MultiIndex en colonnes régulières, vous pouvez utiliser la méthode reset_index :

df1 = grouped.reset_index(name='new')

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