2016-10-19 62 views
1

我有一個如下所示的數據框。 x是指數python pandas:在數據框中重新分配索引,列和值

    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中實現這個?

回答

3

您可以先用reset_index,然後pivot和最後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_axis(新中pandas0.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 
相關問題