Может быть, мое решение может быть немного наивным, но вы можете преобразовать интересующие вас значения в nan, а затем использовать метод fillna . Вот так:
import pandas as pd
import numpy as np
df = pd.DataFrame(dict(col1=[1,2,3,4,5],col2=[3,0,3,5,0],col3=[0,2,0,0,1]))
df[df==0]=np.nan
df.fillna(method='ffill',axis=1)