priya
priya

Reputation: 375

Reset the counter when column has non zero value

I have the dataframe with a column.

  A   
  0.0
  0.0
  0.0
  12.0
  0.0
  0.0
  34.0
  0.0
  0.0
  0.0
  0.0
  11.0

I want the output like this with a counter column. I want the counter to be restarted after non zero value. For the row after every non zero value, the counter should be intilaized again and then should increment.

 A   Counter

 0.0   1
 0.0   2
 0.0   3
 12.0  4
 0.0   1
 0.0   2
 34.0  3
 0.0   1
 0.0   2
 0.0   3
 0.0   4
 11.0  5

Upvotes: 0

Views: 77

Answers (1)

BENY
BENY

Reputation: 323316

Let us try cumsum create the groupby key , [::-1] here is reverse the order

df['Counter'] = df.A.groupby(df.A.ne(0)[::-1].cumsum()).cumcount()+1
Out[442]: 
0     1
1     2
2     3
3     4
4     1
5     2
6     3
7     1
8     2
9     3
10    4
11    5
dtype: int64

Upvotes: 4

Related Questions