кумулятивный счет в предыдущих строках во фрейме данных панд - PullRequest
0 голосов
/ 04 мая 2018

У меня есть такой фрейм данных:

 date   ID   flag
 Apr1   1    True
 Apr2   2    True
 May1   1    True
 May1   1    False
 May2   1    True

Требуется совокупный подсчет ID в предыдущие дни (включая этот день), где установлен флаг True, например:

 date   ID   flag   count
 Apr1   1    True   1
 Apr2   2    True   1
 May1   1    True   2
 May1   1    False  2
 May2   1    True   3

Я пробовал булево маскирование и cumsum(), но не получилось. Предложения?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

Кажется, это то, что вам нужно:

df['count'] = df.groupby(by=['ID'])['flag'].cumsum().astype(int)

Выход:

    date    ID  flag    count
0   Apr1    1   True    1
1   Apr2    2   True    1
2   May1    1   True    2
3   May1    1   False   2
4   May2    1   True    3
0 голосов
/ 04 мая 2018

Это не cumcount вы ищете groupby и cumsum

df.groupby('ID').flag.cumsum().astype(int)
Out[362]: 
0    1
1    1
2    2
3    2
4    3
Name: flag, dtype: int32
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...