Бит трюк с использованием pandas.DataFrame.ffill
с notna
и where
:
df.where(df.ffill().notna(), 0)
Или используя pandas.DataFrame.interpolate
:
df.interpolate('zero', fill_value=0, limit_direction='backward')
Вывод:
A B C
0 1 0.0 0.0
1 2 0.0 5.0
2 3 3.0 NaN
3 4 NaN NaN