2016-09-10 75 views
0

我們是否具有proc轉置的sas等價物。我有以下變量要在python中排列的列

a b c d e f g 
1 3 4 5 3 2 2 
2 3 3 3 2 4 2 

我要轉,跨列A和B,虛設了下面放:

a b tranposed_columns transposed_value 
1 3 c     4 
1 3 d     5 
1 3 e     3 
1 3 f     2 
1 3 g     2 
2 3 c     3 
2 3 d     3 
2 3 e     2 
2 3 f     4 
2 3 g     2 

我怎樣才能做到這一點的巨蟒,在SAS我會寫

proc transpose data=Dummy_data 
out=ouput_data (rename=(col1=transposed_value _name_=tranposed_columns)); 
by a b; 
run; 

我試過dummy_data.T,但它轉移所有的數據,也嘗試過使用pivot數據,但它不重複行。

dummy_data.pivot_table(index=['a','b'],values=['c','d','e','f','g'], aggfunc='sum', fill_value=0) 
+0

@unutbu:對,我錯過了這是關於熊貓;問題標題和第一段將我引向了規範的副本。 –

+0

相關:http://stackoverflow.com/q/18551342/190597 – unutbu

回答

2

使用pd.melt將列合併成一個列。使用id_vars參數來「保護」某些色譜柱不參與熔化:

In [11]: pd.melt(df, id_vars=['a','b'], var_name='transposed_columns', value_name='transposed_value') 
Out[11]: 
    a b transposed_columns transposed_value 
0 1 3     c     4 
1 2 3     c     3 
2 1 3     d     5 
3 2 3     d     3 
4 1 3     e     3 
5 2 3     e     2 
6 1 3     f     2 
7 2 3     f     4 
8 1 3     g     2 
9 2 3     g     2 
+0

非常感謝您的重複刪除。這也很好。簡單優雅的解決方案。 – Mukul