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!