<p>将<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.get_dummies.html" rel="noreferrer">^{<cd1>}</a>与带分隔符<code>.</code>的连接列一起使用,按<code>ID</code>列按<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.set_index.html" rel="noreferrer">^{<cd4>}</a>索引,最后一次按索引<code>max</code>:</p>
<pre><code>df['join'] = df['DEV'] + '.' + df['STATE']
df = pd.get_dummies(df.set_index('ID')['join']).max(level=0)
print (df)
DEV1.off DEV1.on DEV2.on DEV3.off DEV3.on
ID
1 0 1 0 0 0
2 0 0 1 0 0
3 1 0 0 1 1
</code></pre>
<p>另一个使用<code>MultiIndex</code>并通过<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.unstack.html" rel="noreferrer">^{<cd7>}</a>重塑形状的解决方案,但必须<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.swaplevel.html" rel="noreferrer">^{<cd8>}</a>、<a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort_index.html" rel="noreferrer">^{<cd9>}</a>和最后一个展平<code>MultiIndex</code>:</p>
^{pr2}$