2017-10-12 79 views
1

我正在尋找轉置一個數據框內的列,以便它成爲一行,同時使用另一行作爲索引。具體地講,我需要所有COLB值,其中可樂==「1」成爲值ROWA,並且所有的COLB其中可樂==「2」成爲值rowB中將一個pandas col轉換成一行,使用另一個col作爲索引

即我需要打開:

index ColA ColB 
    0  1.0  1.1 
    1  1.0 12.2 
    2  1.0  4.5 
    3  2.0  5.1 
    4  2.0  7.7 
    5  2.0  9.5 

成...

 ColB 
      0  1  2 
ColA 
1.0  1.1 12.2 4.5 
2.0  5.1  7.7 9.5 

------更新#1 --------

在參考@Scott_Boston提供的答案:

df.groupby('ColA').apply(lambda x: x.reset_index().ColB) 

似乎給我:

ColA 
1.0 0  1.1 
     1 12.2 
     2  4.5 
2.0 0  5.1 
     1  7.7 
     2  9.5 

回答

3
df.groupby('ColA').ColB.apply(list).apply(pd.Series).rename_axis('ColB',1) 
Out[113]: 
ColB 0  1 2 
ColA     
1.0 1.1 12.2 4.5 
2.0 5.1 7.7 9.5 
+0

謝謝,這工作非常好 – mbadd

3

讓我們用groupbyapply,並reset_index

df.groupby('ColA').apply(lambda x: x.reset_index().ColB) 

輸出:

ColB 0  1 2 
ColA     
1.0 1.1 12.2 4.5 
2.0 5.1 7.7 9.5 
+1

不錯的使用情況適用〜:) – Wen

+0

感謝張貼!不幸的是,這似乎並沒有將ColB列轉換成一行 - 我不知道爲什麼。有關詳細信息,請參閱OP上的更新。 – mbadd

相關問題