<p>如果新列名以<code>0</code>开头没有问题,请使用带有<code>join</code>的<code>DataFrame</code>构造函数:</p>
<pre><code>df = pd.DataFrame({'message': messages}).join(pd.DataFrame(labels).add_prefix('cat_'))
print (df)
message cat_0 cat_1 cat_2 cat_3 cat_4
0 message1 1 0 1 3 1
1 message2 1 1 2 0 3
2 message3 0 0 2 1 0
</code></pre>
<hr/>
<pre><code>f = lambda x: f'cat_{x + 1}'
df = pd.DataFrame({'message': messages}).join(pd.DataFrame(labels).rename(columns=f))
print (df)
message cat_1 cat_2 cat_3 cat_4 cat_5
0 message1 1 0 1 3 1
1 message2 1 1 2 0 3
2 message3 0 0 2 1 0
</code></pre>
<p>还有一些想法:</p>
<pre><code>f = lambda x: f'cat_{x + 1}'
df = (pd.DataFrame(labels,index=messages)
.rename(columns=f)
.rename_axis('messages')
.reset_index())
print (df)
messages cat_1 cat_2 cat_3 cat_4 cat_5
0 message1 1 0 1 3 1
1 message2 1 1 2 0 3
2 message3 0 0 2 1 0
</code></pre>
<p>或者有点疯狂:</p>
<pre><code>f = lambda x: f'cat_{x + 1}'
df = (pd.DataFrame(labels,index=pd.Series(messages, name='messages'))
.rename(columns=f)
.reset_index())
</code></pre>
<p>或先处理嵌套列表的解决方案:</p>
<pre><code>d = {f'cat_{i + 1}': x for i, x in enumerate(map(list, zip(*labels)))}
d = {**{'message': messages}, **d}
df = pd.DataFrame(d)
print (df)
message cat_1 cat_2 cat_3 cat_4 cat_5
0 message1 1 0 1 3 1
1 message2 1 1 2 0 3
2 message3 0 0 2 1 0
</code></pre>