擅长:python、mysql、java
<p>可以将<code>mask</code>与<code>ffill</code>一起使用:</p>
<pre><code>df.assign(heading=df.col1.mask(~df.col1.str.startswith('heading')).ffill())
</code></pre>
<p/>
<pre><code> col1 heading
0 heading1 heading1
1 abc heading1
2 efg heading1
3 hij heading1
4 heading2 heading2
5 klm heading2
</code></pre>
<hr/>
<p>其工作原理是将任何不以<code>heading</code>开头的值替换为<code>NaN</code>,然后向前填充最后一个非nan值:</p>
<pre><code>df.col1.mask(~df.col1.str.startswith('heading'))
</code></pre>
<p/>
<pre><code>0 heading1
1 NaN
2 NaN
3 NaN
4 heading2
5 NaN
Name: col1, dtype: object
</code></pre>
<p/>
<pre><code>df.col1.mask(~df.col1.str.startswith('heading')).ffill()
</code></pre>
<p/>
<pre><code>0 heading1
1 heading1
2 heading1
3 heading1
4 heading2
5 heading2
Name: col1, dtype: object
</code></pre>