Вы можете использовать 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