<p>尝试:</p>
<pre><code>df2 = df.set_index('id').apply(pd.Series.explode).reset_index()
df3 = df2.pivot(columns='names', values='score', index='id')
</code></pre>
<hr/>
<p>df3:</p>
<pre><code>names F1 F2 F3 F4 F5 F6
id
ab01 00123 000.001 00127 00.0123 111 NaN
ab02 00123 000.003 00156 00.067 156 254
ab03 00234 000.078 00188 00.0144 188 NaN
ab04 00345 000.01112 001567 00.0186 555 NaN
</code></pre>
<hr/>
<p><strong>编辑:</strong></p>
<pre><code>x = (df.apply(lambda x: dict(zip(x['names'], x['score'])), axis=1))
y = pd.DataFrame(x.values.tolist(), index=x.index).fillna("null").join(df.id)
</code></pre>
<p>或</p>
<pre><code>x = (df.apply(lambda x: dict(zip(x['names'], x['score'])), axis=1))
z = pd.DataFrame(x.values.tolist(), index=x.index).fillna("null")
y = pd.concat([df.id , z], axis=1)
</code></pre>
<hr/>
<p>y:</p>
<pre><code> F1 F2 F3 F4 F5 F6 id
0 00123 000.001 00127 00.0123 111 null ab01
1 00123 000.003 00156 00.067 156 254 ab02
2 00234 000.078 00188 00.0144 188 null ab03
3 00345 000.01112 001567 00.0186 555 null ab04
</code></pre>