2017-05-05 42 views
0

數據框中壓扁給出一個數據幀熊貓2列和5項列

A  B 
1 0.1  0.01 
2 0.2  0.02 
3 0.3  0.03 
4 0.4  0.04 
5 0.5  0.05 

有沒有一種方式,以「工程」在列的索引維度?我的意思是一個操作,這將導致帶有標籤A_1,A_2,... A_5,B_1,... B_5的系列。

  vals 
A_1  0.1 
A_2  0.2 
A_3  0.3 
A_4  0.4 
A_5  0.5 
B_1  0.01 
B_2  0.02 
B_3  0.03 
B_4  0.04 
B_5  0.05 

我已經找到了一種迭代的方法,但我很確定熊貓有一個函數。

+0

解釋更多的細節,請。你可以通過你想要做的一個例子。你也可以更多地解釋你想要在那裏應用的操作,以及如何完成這個操作。 – manelfp

+0

顯示您當前的迭代和輸出。 – pshep123

回答

1

df.stack()會得到你最的方式有,但你需要做一些指數的操作,如果你想獲得這些確切的指標(「A_1」,「A_2」等)

s = df.stack() 

這給系列:

0 A 0.998446 
    B 0.847224 
1 A 0.776747 
    B 0.863142 
2 A 0.343800 
    B 0.056423 
3 A 0.194158 
    B 0.178408 
4 A 0.488775 
    B 0.019145 

然後,您可以從多指標得到的值(元組),並讓他們進入的格式,你要如下:

new_index = ['_'.join((i[1], str(i[0]+1))) for i in s.index.get_values()] 

這會翻轉每個元組中的第一個和第二個值,將整數加1(因爲索引通常從0開始)並用下劃線連接元組。

然後,您可以將此列表指定爲新索引,並通過索引對系列進行排序以獲得您指定的排序。

s.index = new_index 
s = s.sort_index() 

這會導致一系列s

A_1 0.998446 
A_2 0.776747 
A_3 0.343800 
A_4 0.194158 
A_5 0.488775 
B_1 0.847224 
B_2 0.863142 
B_3 0.056423 
B_4 0.178408 
B_5 0.019145 
+0

這就是我正在尋找的功能。我意識到索引/列結構。 – AugBar