Comment GroupBy un Dataframe dans les Pandas et conserver les colonnes
Étant donné un dataframe qui enregistre les utilisations de certains livres comme ceci:
Name Type ID
Book1 ebook 1
Book2 paper 2
Book3 paper 3
Book1 ebook 1
Book2 paper 2
J'ai besoin d'obtenir le compte de tous les livres, en gardant les autres colonnes et obtenir ceci:
Name Type ID Count
Book1 ebook 1 2
Book2 paper 2 2
Book3 paper 3 1
Comment cela peut-il être fait?
Merci!
32
demandé sur
Meghdeep Ray
2015-07-22 20:01:02
2 réponses
Vous voulez ce qui suit:
In [20]:
df.groupby(['Name','Type','ID']).count().reset_index()
Out[20]:
Name Type ID Count
0 Book1 ebook 1 2
1 Book2 paper 2 2
2 Book3 paper 3 1
Dans votre cas, le 'Nom', 'Type' et 'ID' cols match en valeurs afin que nous puissions groupby
sur ces, appel count
et puis reset_index
.
Une autre approche consisterait à ajouter la colonne' Count ' en utilisant transform
, puis à appeler drop_duplicates
:
In [25]:
df['Count'] = df.groupby(['Name'])['ID'].transform('count')
df.drop_duplicates()
Out[25]:
Name Type ID Count
0 Book1 ebook 1 2
1 Book2 paper 2 2
2 Book3 paper 3 1
33
répondu
EdChum
2015-07-22 18:14:50
Je pense que as_index = False devrait faire l'affaire.
df.groupby(['Name','Type','ID'], as_index=False).count()
17
répondu
jpobst
2016-06-02 22:06:18