2 votes

Besoin d'une somme pour chaque nom dans une seule colonne

J'ai besoin d'une somme cumulative de chaque nom dans ma colonne df['Name'], mais j'ai besoin que le compte soit réinitialisé lorsqu'un nouveau nom apparaît dans la colonne. Comment puis-je réaliser cela dans pandas ? J'ai essayé plusieurs choses avec df.cumsum , df.rolling etc. sans succès.

Name
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Devonta Freeman
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown
Antonio Brown

Sortie souhaitée :

Name    Count
Devonta Freeman 1
Devonta Freeman 2
Devonta Freeman 3
Devonta Freeman 4
Devonta Freeman 5
Devonta Freeman 6
Devonta Freeman 7
Devonta Freeman 8
Devonta Freeman 9
Devonta Freeman 10
Devonta Freeman 11
Devonta Freeman 12
Devonta Freeman 13
Devonta Freeman 14
Devonta Freeman 15
Antonio Brown   1
Antonio Brown   2
Antonio Brown   3
Antonio Brown   4
Antonio Brown   5
Antonio Brown   6
Antonio Brown   7
Antonio Brown   8
Antonio Brown   9
Antonio Brown   10
Antonio Brown   11
Antonio Brown   12
Antonio Brown   13
Antonio Brown   14
Antonio Brown   15
Antonio Brown   16
Antonio Brown   17

2voto

user17242583 Points 1102

Vous recherchez cumcount .

df['Count'] = df.groupby('Name').cumcount()

Sortie :

>>> df
               Name  Count
0   Devonta Freeman      1
1   Devonta Freeman      2
2   Devonta Freeman      3
3   Devonta Freeman      4
4   Devonta Freeman      5
5   Devonta Freeman      6
6   Devonta Freeman      7
7   Devonta Freeman      8
8   Devonta Freeman      9
9   Devonta Freeman     10
10  Devonta Freeman     11
11  Devonta Freeman     12
12  Devonta Freeman     13
13  Devonta Freeman     14
14  Devonta Freeman     15
15    Antonio Brown      1
16    Antonio Brown      2
17    Antonio Brown      3
18    Antonio Brown      4
19    Antonio Brown      5
20    Antonio Brown      6
21    Antonio Brown      7
22    Antonio Brown      8
23    Antonio Brown      9
24    Antonio Brown     10
25    Antonio Brown     11
26    Antonio Brown     12
27    Antonio Brown     13
28    Antonio Brown     14
29    Antonio Brown     15
30    Antonio Brown     16
31    Antonio Brown     17

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X