<p>我不太明白,但我会试试的。我通常使用stack/unstack而不是pivot,这更接近您想要的吗?</p>
<pre><code>df.set_index(['struct_id','resNum','score_type_name']).unstack()
score_value
score_type_name fa_dun fa_dun_dev fa_dun_rot fa_dun_semi omega
struct_id resNum
4294967297 1 2.185618 0.000027 NaN 2.185591 0.064840
2 1.378923 0.028560 1.350362 NaN 0.222345
3 0.020352 0.025507 -0.005156 NaN 0.005106
4 4.218029 0.003712 NaN 4.214317 0.212160
5 3.663050 0.004953 NaN NaN 0.061867
score_type_name p_aa_pp rama ref
struct_id resNum
4294967297 1 NaN NaN -1.191180
2 -0.442467 -0.795161 0.249477
3 -0.096847 0.267443 0.979644
4 -0.462765 -1.403292 -1.960940
5 NaN -0.600053 NaN
</code></pre>
<p>我不知道为什么你的轴心不工作(在我看来似乎应该这样做,但我可能是错的),但它似乎工作(或至少不给一个错误),如果我离开'结构id'。当然,对于“struct\u id”有多个不同值的完整数据集,这并不是一个真正有用的解决方案。</p>
<pre><code>df.pivot(columns='score_type_name',values='score_value',index='resNum')
score_type_name fa_dun fa_dun_dev fa_dun_rot fa_dun_semi omega
resNum
1 2.185618 0.000027 NaN 2.185591 0.064840
2 1.378923 0.028560 1.350362 NaN 0.222345
3 0.020352 0.025507 -0.005156 NaN 0.005106
4 4.218029 0.003712 NaN 4.214317 0.212160
5 3.663050 0.004953 NaN NaN 0.061867
score_type_name p_aa_pp rama ref
resNum
1 NaN NaN -1.191180
2 -0.442467 -0.795161 0.249477
3 -0.096847 0.267443 0.979644
4 -0.462765 -1.403292 -1.960940
5 NaN -0.600053 NaN
</code></pre>
<p><strong>编辑添加:</strong><code>reset_index()</code>将从多索引(分层)转换为更平缓的样式。列名中仍然存在一些层次结构,有时最简单的方法就是执行<code>df.columns=['var1','var2',...]</code>操作,尽管如果执行一些搜索,还有更复杂的方法。</p>
<p><code>df.set_index(['struct_id','resNum','score_type_name']).unstack().reset_index()</code></p>
<pre><code> struct_id resNum score_value
score_type_name fa_dun fa_dun_dev fa_dun_rot
0 4294967297 1 2.185618 0.000027 NaN
1 4294967297 2 1.378923 0.028560 1.350362
2 4294967297 3 0.020352 0.025507 -0.005156
3 4294967297 4 4.218029 0.003712 NaN
4 4294967297 5 3.663050 0.004953 NaN
</code></pre>