Эта простая функция, по сути, делает то, что я хочу.Я думаю, что было бы неплохо, если бы ffill можно было изменить таким образом ...
def fill_down(df, col, val, start, end = 0, interval = 1):
if not end:
end = len(df)
for i in range(start,end,interval):
df[col].iloc[i] += val
return df