Zero fill data frame forward fill
<p>I am trying to fill a dataframe with zeros, however <strong>I do not want to touch leading NaNs</strong>:</p>

<pre><code>rng = pd.date_range('2016-06-01', periods=9, freq='D')
df = pd.DataFrame({'data': pd.Series([np.nan]*3 + [20, 30, 40] + [np.nan]*3, rng)})

2016-06-01     NaN
2016-06-02     NaN
2016-06-03     NaN
2016-06-04    20.0
2016-06-05    30.0
2016-06-06    40.0
2016-06-07     NaN
2016-06-08     NaN
2016-06-09     NaN
</code></pre>

<p>The df I want after filling/replacing is this:</p>

<pre><code>pd.DataFrame({'data': pd.Series([np.nan]*3 + [20, 30, 40] + [0.]*3, rng)})

2016-06-01     NaN
2016-06-02     NaN
2016-06-03     NaN
2016-06-04    20.0
2016-06-05    30.0
2016-06-06    40.0
2016-06-07     0.0
2016-06-08     0.0
2016-06-09     0.0
</code></pre>

<p>Since <code>fillna()</code> only allows value or method and <code>fillna(0)</code> replaces <strong>all NaNs, including leading</strong>, I was hoping replace could jump in here, but</p>

<pre><code>df.replace([np.nan], 0, method='ffill')
</code></pre>

<p>also replaces all NaNs.</p>

<p><strong>How can I zero fill values only after the first non-NaN value, also with multiple data columns?</strong></p>