<h3><code>melt</code>与<code>pivot_table</code></h3>
<pre><code>v = df.melt(['ID', 'Segment'])
v = v.pivot_table(index='ID',
columns=['Segment', 'variable'],
values='value',
fill_value='null')
v.columns = v.columns.map('{0[1]}_{0[0]}'.format)
</code></pre>
<p/>
<pre><code>print(v)
Var1_AAA Var2_AAA Var3_AAA Var1_BBB Var2_BBB Var3_BBB Var1_CCC Var2_CCC \
ID
1 1 1 1 null null null null null
2 null null null 1 0 1 null null
3 null null null 1 1 1 null null
4 0 1 1 null null null null null
5 null null null null null null 0 1
6 0 0 1 null null null null null
7 0 1 1 null null null null null
8 1 0 1 null null null null null
9 null null null 1 0 1 null null
10 null null null null null null 1 0
Var3_CCC
ID
1 null
2 null
3 null
4 null
5 1
6 null
7 null
8 null
9 null
10 1
</code></pre>
<p>我建议省略<code>fill_value='null'</code>,而用<code>fill_value=0</code>替换它或完全删除,因为将字符串与数字数据混合会影响性能。但是,如果你只想保存结果,就可以了。你知道吗</p>