python pandas:在数据框中重新分配索引、列和值

python pandas: Reallocate index, columns and values within dataframe

我有一个如下所示的数据框。 x 是索引

                  y      value
x                   
1                 0  0.016175
1                 1  0.017832
1                 2  0.021536
1                 3  0.024777
2                 0  0.027594
2                 1  0.029950
2                 2  0.031890
2                 3  0.033570
3                 0  0.035070
3                 1  0.036329
3                 2  0.037297
3                 3  0.037983

我想重新分配框架中的数据,使结果如下所示:

                 y       1(x)       2(x)         3(x)

                 0  0.016175    0.027594    0.035070
                 1  0.017832    0.029950    0.036329
                 2  0.021536    0.031890    0.037297
                 3  0.024777    0.033570    0.037983

原始索引应作为列标题放置,y 应为新索引。关于如何在 Python 中实现这一点的任何想法?

你可以先用reset_index, then pivot and last add_suffix:

print (df.reset_index().pivot(index='y', columns='x', values='value').add_suffix('(x)'))
x      1(x)      2(x)      3(x)
y                              
0  0.016175  0.027594  0.035070
1  0.017832  0.029950  0.036329
2  0.021536  0.031890  0.037297
3  0.024777  0.033570  0.037983

最后如果需要删除列名添加 rename_axispandas 0.18.0 中的新内容):

print (df.reset_index()
         .pivot(index='y', columns='x', values='value')
         .add_suffix('(x)')
         .rename_axis(None, axis=1))
       1(x)      2(x)      3(x)
y                              
0  0.016175  0.027594  0.035070
1  0.017832  0.029950  0.036329
2  0.021536  0.031890  0.037297
3  0.024777  0.033570  0.037983