擅长:python、mysql、java
<p>您可以使用<code>pd.get_dummies()</code>:</p>
<pre><code>pd.get_dummies(data["a"],prefix="a")
</code></pre>
<p>会给你:</p>
<pre><code> a_0 a_1 a_2
0 1 0 0
1 0 1 0
2 0 0 1
3 1 0 0
</code></pre>
<p>它可以自动生成列名。您可以将此应用于所有列,然后获取列名称。不需要将它们转换为numpy矩阵。</p>
<p>因此:</p>
<pre><code>df = pd.DataFrame({"a": [0, 1, 2,0], "b": [0,1,4, 5], "c":[0,1,4, 5]})
data = df.as_matrix()
</code></pre>
<p>解决方案如下:</p>
<pre><code>columns = df.columns
my_result = pd.DataFrame()
temp = pd.DataFrame()
for runner in columns:
temp = pd.get_dummies(df[runner], prefix=runner)
my_result[temp.columns] = temp
print(my_result.columns)
>>Index(['a_0', 'a_1', 'a_2', 'b_0', 'b_1', 'b_4', 'b_5', 'c_0', 'c_1', 'c_4',
'c_5'],
dtype='object')
</code></pre>