<p>此处不需要空列。你知道吗</p>
<p>对于新的指示符列使用<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.get_dummies.html" rel="nofollow noreferrer">^{<cd1>}</a>,对于通过<code>range</code>和最后一个<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.add_prefix.html" rel="nofollow noreferrer">^{<cd4>}</a>添加不存在的列,使用<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.reindex.html" rel="nofollow noreferrer">^{<cd2>}</a>:</p>
<pre><code>df1 = (pd.get_dummies(df['Product'])
.reindex(range(1, 8), axis=1, fill_value=0)
.add_prefix('Prod'))
print (df1)
Prod1 Prod2 Prod3 Prod4 Prod5 Prod6 Prod7
0 1 0 0 0 0 0 0
1 0 1 0 0 0 0 0
2 0 0 1 0 0 0 0
3 1 0 0 0 0 0 0
4 0 0 0 1 0 0 0
5 0 0 1 0 0 0 0
6 0 0 0 0 0 1 0
</code></pre>
<p>然后可以将<a href="http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.join.html" rel="nofollow noreferrer">^{<cd5>}</a>与原始<code>DataFrame</code>的前2列一起使用:</p>
<pre><code>df2 = df.iloc[:, :2].join(df1)
print (df2)
ID Product Prod1 Prod2 Prod3 Prod4 Prod5 Prod6 Prod7
0 1 1 1 0 0 0 0 0 0
1 1 2 0 1 0 0 0 0 0
2 1 3 0 0 1 0 0 0 0
3 2 1 1 0 0 0 0 0 0
4 2 4 0 0 0 1 0 0 0
5 3 3 0 0 1 0 0 0 0
6 4 6 0 0 0 0 0 1 0
</code></pre>