first_valid_idx = df.apply(lambda x: x.first_valid_index()).to_frame()
df = df.fillna(0)
for ix, r in first_valid_idx.iterrows():
    df.ix[df.index < r[0], ix] = np.nan
Zero fill data frame forward fill