ffil с группой и соответствием условию

1

Я охотно собираюсь заполнить значение 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()
  • 0
    столбец log содержит только 0 и 1 записей? Зачем вам нужно использовать groupby если файл уже сгруппирован по этому столбцу?
  • 0
    Журнал столбцов имеет только 1 и 0
Теги:
pandas
numpy

1 ответ

3

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

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

для каждого id, как только вы достигнете 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню