ffil с группой и соответствием условию - PullRequest
0 голосов
/ 05 июля 2018

Я готов ввести значение log для каждого идентификатора, когда вы найдете первую 1 в столбце log

Пример:

df 

id   log
 1     0
 1     1
 1     0
 1     0
 2     1
 2     0
 3     1
 3     0
 3     1

до

id   log  ffil_log
 1     0         0
 1     1         1
 1     0         1
 1     0         1
 2     1         1
 2     0         1
 3     1         1
 3     0         1
 3     1         1 

Моя попытка была:

df['ffil_log']=df.log.where(df.log==1).groupby(df.id).ffill()

1 Ответ

0 голосов
/ 05 июля 2018

Вы можете использовать cummax и groupby, такие как:

df['ffil_log'] = df.groupby('id')['log'].cummax()

для каждого идентификатора, как только вы достигнете 1 в ряду, это будет значение для одного после, и вы получите, как и ожидалось

   id  log  ffil_log
0   1    0         0
1   1    1         1
2   1    0         1
3   1    0         1
4   2    1         1
5   2    0         1
6   3    1         1
7   3    0         1
8   3    1         1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...