Как рассчитывать количество последовательных появлений в df пандах? - PullRequest
0 голосов
/ 06 июня 2019

мой столбец похож на A, и я хочу создать еще один столбец B, который подсчитывает число следующих последовательностей:

 A   B 
---|---
 1 | 0
 0 | 0
 0 | 0
 1 | 1
 0 | 1
 0 | 1
 1 | 2
 0 | 2 
 0 | 2
-1 | 0
 0 | 0
 0 | 0 
-1 |-1
 0 |-1
-1 |-2 
 0 |-2
 0 |-2
 1 | 0
 0 | 0
 1 | 1
 0 | 1
 1 | 2
 1 | 3
 0 | 3

1 Ответ

1 голос
/ 06 июня 2019

В вашем случае создайте групповой ключ, используя ffill с cumsum, затем groupby cumsum вычтите элемент first каждой группы

g=df.groupby(df.A.mask(df.A==0).ffill().diff().ne(0).cumsum()).A
g.cumsum()-g.transform('first')
#df['B']= g.cumsum()-g.transform('first')

Out[303]: 
0     0
1     0
2     0
3     1
4     1
5     1
6     2
7     2
8     2
9     0
10    0
11    0
12   -1
13   -1
14   -2
15   -2
16   -2
17    0
18    0
19    1
20    1
21    2
22    3
23    3
Name: A, dtype: int64
...