2017-08-22 55 views
0

我有一個CSV文件中的數據是這樣的移調csv文件

col1,col2,col3,col4,col5 
A,1,3,5,6 
B,2,3,4,5 

我要轉這個文件是這樣的:

col1,col6,col7 
A,Col1,1 
A,col2,3 
A,col3,5 

我使用Python 2.7。那麼我可以使用Python熊貓嗎?

+2

這種轉換的術語不是「轉置」,而是從寬轉換爲長格式**。已經有一些可用的答案... –

回答

6

使用melt

df.melt(id_vars='col1', var_name='col6', value_name='col7') 

輸出:

col1 col6 col7 
0 A col2  1 
1 B col2  2 
2 A col3  3 
3 B col3  3 
4 A col4  5 
5 B col4  4 
6 A col5  6 
7 B col5  5 

選項2使用​​和stack

df.set_index('col1').rename_axis('col6', 1).stack().reset_index(name='col7') 

輸出:

col1 col6 col7 
0 A col2  1 
1 A col3  3 
2 A col4  5 
3 A col5  6 
4 B col2  2 
5 B col3  3 
6 B col4  4 
7 B col5  5 
+0

感謝您的答案。使用熊貓可能有條件地延長?和col2一樣,col2_value在col6中,我想col8它將存儲col2對應的col2_value。如果_value不適用於某些col6行,那麼col8將爲0 – keshaw

+0

@keshaw,'unstack'或者'pivot' – Wen

+0

熔化和旋轉可以被認爲是做對立面。您將列「融化」爲行,並將行「轉」爲列。 Similair與堆棧和堆棧()。 –