擅长:python、mysql、java
<p>将前两列转换为多索引(两级索引)。取消数据帧的堆栈(将第二级行索引转换为列索引)。用<code>"$"</code>填空:</p>
<pre><code>d = df.set_index(['ID', 'Type']).unstack().fillna('$0')
</code></pre>
<p>更新列名:</p>
<pre><code>d.columns = 'Type' + d.columns.levels[1]
</code></pre>
<p>结果是:</p>
<pre><code>Type TypeA TypeB TypeC
ID
01 $10 $12 $14
02 $0 $20 $21
03 $0 $11 $0
</code></pre>
<p>如果索引名<code>'Type'</code>困扰您,请禁用它:</p>
<pre><code>d.columns.name = None
</code></pre>
<p>最后,如果希望ID是列而不是索引,请重置索引:</p>
<pre><code>d.reset_index(inplace=True)
</code></pre>
<p>最终结果:</p>
<pre><code> ID TypeA TypeB TypeC
0 01 $10 $12 $14
1 02 $0 $20 $21
2 03 $0 $11 $0
</code></pre>