2015-03-02 92 views
1

我試圖以某種方式來樞軸轉換數據,以便結果表的索引和列不會自動排序。數據示例可能是:熊貓:沒有排序索引和列的樞軸表

X Y Z 

1 1 1 
3 1 2 
2 1 3 
4 1 4 

1 2 5 
3 2 6 
2 2 7 
4 2 8 

數據被解釋爲X,Y和Z軸。該pivotted結果應該是這樣的:

X 1 3 2 4 
Y 
1 1 2 3 4 
2 5 6 7 8 

相反的結果看起來是這樣的,其中索引和列進行排序,並據此數據:

X 1 2 3 4 
Y 
1 1 3 2 4 
2 5 7 6 8 

在這一點上,我已經失去了相關信息測量的順序。例如,假設我將在Y = 1處繪製行,X爲X軸,Y軸爲數據值。

This would result in the figures in this picture.在右邊是我想如何繪製數據。有沒有人有一個想法如何防止大熊貓排序索引和列時旋轉表?

回答

0

我不得不替代恢復的順序,排序是基於X相對於Ÿ值,例如,你可以恢復你的X列通過這樣的排序:

import pandas as pd 

# using your sample data 
df = pd.read_clipboard() 

df = df.pivot('Y', 'X', 'Z') 

df 
X 1 2 3 4 
Y    
1 1 3 2 4 
2 5 7 6 8 

# re-order your X columns by the values of first Y, for instance 
df = df[df.T[1].values] 

df 
X 1 3 2 4 
Y    
1 1 2 3 4 
2 5 6 7 8 

不是最好的方法,但確定它會達到你想要的。

+0

我明白你做了什麼,但我想要原始順序的列而不管Z值。我給出的例子可能不是最好的。也許我可以從X列中檢索模式'[1,3,2,4]'並按照該模式進行排序,我試圖找出如何,但是如果您有一個想法,我會非常感激。 – Rubenknex 2015-03-03 08:47:20

+0

好吧,我可以通過'df.groupby('Y')['X']。get_group(1).values'來檢索模式,並按這些排序。 – Rubenknex 2015-03-03 09:03:48