Maison >développement back-end >Tutoriel Python >Comment puis-je utiliser Pandas Groupby pour joindre des valeurs avec un délimiteur ?

Comment puis-je utiliser Pandas Groupby pour joindre des valeurs avec un délimiteur ?

DDD
DDDoriginal
2024-12-09 15:49:14852parcourir

How Can I Use Pandas Groupby to Join Values with a Delimiter?

Pandas Groupby avec délimiteur de jointure

À l'aide de la bibliothèque Pandas, vous pouvez regrouper des lignes avec plusieurs valeurs à l'aide de la fonction groupby. Cependant, par défaut, les valeurs sont concaténées sans délimiteur. Cet article aborde la question de l'introduction d'un délimiteur pour séparer les valeurs au sein de chaque groupe.

Vous avez initialement tenté d'utiliser la fonction apply() pour joindre les valeurs avec un tiret (-), mais cela a abouti à l'ensemble la chaîne étant concaténée au lieu de séparer les valeurs individuelles.

Une approche plus simple consiste à utiliser la fonction agg() avec le paramètre join. Voici comment obtenir le résultat souhaité :

group = df.groupby('col')['val'].agg('-'.join)

Cela joindra les valeurs au sein de chaque groupe en utilisant un tiret comme délimiteur. Le résultat sera :

col
A    Cat-Tiger
B     Ball-Bat

Notez que l'index est toujours présent dans la sortie, si vous souhaitez le convertir en colonne, vous pouvez utiliser la fonction reset_index() :

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

Cela convertira l'index en une nouvelle colonne nommée new. Le résultat final sera :

  col  new
0   A  Cat-Tiger
1   B  Ball-Bat

Vous pouvez également utiliser la fonction squeeze() (notez que cette fonction a été créée en tant que fonction_nunique dans Pandas 1.4.0) pour supprimer entièrement l'index et obtenir un objet Series :

group.squeeze()

Cela donnera lieu à une série avec les valeurs groupées jointes par le délimiteur spécifié :

col
A    Cat-Tiger
B     Ball-Bat
Name: val

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