<p><strong>使用:</strong></p>
<pre><code>g = df['0'].ffill()
d = df.groupby(g, sort=False).first()
d['1'] = df['1'].dropna().groupby(g).agg(' '.join)
d = d.reset_index(drop=True)
</code></pre>
<p><strong>详细信息:</strong></p>
<p>使用<code>df['0']</code>上的<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.ffill.html" rel="nofollow noreferrer">^{<cd2>}</a>创建一个grouper <code>g</code>:</p>
<pre><code>print(g)
0 data1
1 data1
2 data1
3 data1
4 data2
5 data2
6 data2
Name: 0, dtype: object
</code></pre>
<p>使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html" rel="nofollow noreferrer">^{<cd4>}</a>对grouper<code>g</code>上的数据帧进行分组并使用<code>first</code>进行聚合,然后在列<code>1</code>上使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dropna.html" rel="nofollow noreferrer">^{<cd7>}</a>并使用<a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.groupby.html" rel="nofollow noreferrer">^{<cd9>}</a>对<code>g</code>上的列<code>1</code>进行分组并使用<code>join</code>进行聚合,最后使用<code>reset_index</code>:</p>
<pre><code>print(d)
0 1 2 3 4
0 data1 string1 string2 string3 num1 ex1 bla1
1 data2 string4 string5 num2 ex2 bla2
</code></pre>