3 votes

Transformer Compter des entiers consécutifs

J'ai un ensemble de données comme

id
1
2
3
4
7
8

Je veux que mon résultat soit le suivant :

id   count
1     4
2     4
3     4
4     4
7     2
8     2

Merci d'avance

0voto

jezrael Points 290608

Créer Series pour des entiers consécutifs par Series.diff , comparer pour ne pas égaler 1 por Series.ne et ajouter la somme cumulée par Series.cumsum :

s = df['id'].diff().ne(1).cumsum()

Ensuite, utilisez Series.map con Series.value_counts :

df['count'] = s.map(s.value_counts())

Ou GroupBy.transform con GroupBy.size :

df['count'] = s.groupby(s).transform('size') 

print (df)
   id  count
0   1      4
1   2      4
2   3      4
3   4      4
4   7      2
5   8      2

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