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!