1
votes

Conserver toutes les colonnes après Pandas groupby

Toronto =Toronto.groupby('Postcode'['Neighbourhood'].agg([('Neighbourhood', ', '.join)]).reset_index()

4 commentaires

Ne postez pas de photos de code / données . Nous ne pouvons pas copier et coller votre image. Vous avez déjà vos données dans Jupyter Notebook. Utilisez simplement print (Toronto) et copiez et collez le résultat de celui-ci dans votre question.


Excuses. Trié!


Existe-t-il une correspondance 1: 1 entre le code postal et l'arrondissement? Si c'est le cas, ajoutez-le simplement en tant que colonne de regroupement. Sinon, spécifiez comment agréger cette colonne dans votre agg


Oui, il y a un mappage un à un. Je ne suis pas sûr de la syntaxe pour l'ajouter en tant que colonne de regroupement. Tout ce que j'ai essayé produit des erreurs


3 Réponses :


1
votes

Comme la relation est 1: 1, vous pouvez utiliser unique et tout ira bien.

                                                          Neighbourhood     

            Borough
Postcode                                                                                   
M8Z       Mimico NW,The Queensway West,Royal York South West,South of Bloor     [Etobicoke]
M9Z                                                            Not assigned  [Not assigned]

Résultat:

df.groupby('Postcode').agg({
    'Neighbourhood': ','.join,
    'Borough': 'unique'
})


0 commentaires

3
votes

Résolu avec

Toronto = (Toronto.groupby(['Postcode', 'Borough'])['Neighbourhood']
                   .agg([('Neighbourhood', ', '.join)]).reset_index())

Merci @ALollz pour le coup de pouce


1 commentaires

Si vous voulez nettoyer un peu la syntaxe, vous pouvez faire: Toronto.groupby (['Postcode', 'Borough'], as_index = False) .Neighbourhood.agg (',' .join) . as_index = False fait qu'il n'est pas nécessaire de réinitialiser l'index, et comme vous avez déjà sélectionné la série de voisinage, vous pouvez simplement spécifier comment l'agréger



0
votes

Une des solutions possibles consiste à ajouter Borough à la liste group-by:

Toronto.groupby(['Postcode', 'Borough']).Neighbourhood\
    .agg(', '.join).reset_index()


0 commentaires