Pandas GroupBy avec Delimiter Joiner
Lors du regroupement de données dans Pandas avec plusieurs valeurs, il peut être nécessaire de concaténer des valeurs au sein de groupes à l'aide d'un délimiteur spécifique. Cependant, une simple opération de regroupement et de somme peut entraîner une sortie indésirable sans le délimiteur souhaité.
Considérez le code suivant :
import pandas as pd df = pd.read_csv("Inputfile.txt", sep='\t') group = df.groupby(['col'])['val'].sum() # Output: # A CatTiger # B BallBat
Cela donne une seule chaîne avec des valeurs concaténées, sans le délimiteur de trait d'union souhaité.
Pour obtenir le résultat souhaité, vous pouvez utiliser la fonction Appliquer en combinaison avec join :
group = df.groupby(['col'])['val'].sum().apply(lambda x: '-'.join(x))
Cependant, cette solution peut toujours ne pas produire le résultat attendu en raison de caractères indésirables inclus dans chaque valeur.
Solution alternative
Pensez plutôt à utiliser la fonction agg avec le paramètre join :
df.groupby('col')['val'].agg('-'.join)
Cela concaténera correctement les valeurs au sein des groupes en utilisant le délimiteur de trait d'union, fournissant le résultat souhaité :
col A Cat-Tiger B Ball-Bat Name: val, dtype: object
Mise à jour de la solution
Pour gérer les colonnes MultiIndex ou Index, vous pouvez réinitialiser l'index et le renommer à l'aide de reset_index function :
df1 = df.groupby('col')['val'].agg('-'.join).reset_index(name='new')
Cela convertira l'index en une nouvelle colonne nommée « nouveau », offrant un moyen pratique de continuer à travailler avec les données regroupées.
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!