2016-10-18 47 views

回答

0

我覺得你可以先用values轉換到numpy array然後numpy.ndarray.reshape

df = pd.DataFrame({'A':[1,2,3,7,7], 
        'B':[4,5,6,8,0], 
        'C':[7,8,9,7,8], 
        'D':[1,3,5,8,1]}) 

print (df) 
    A B C D 
0 1 4 7 1 
1 2 5 8 3 
2 3 6 9 5 
3 7 8 7 8 
4 7 0 8 1 

df = pd.DataFrame(df.values.reshape(4,5),columns=list('ABCDE')) 
print (df) 
    A B C D E 
0 1 4 7 1 2 
1 5 8 3 3 6 
2 9 5 7 8 7 
3 8 7 0 8 1 

print (df.values.reshape(10,2)) 
[[1 4] 
[7 1] 
[2 5] 
[8 3] 
[3 6] 
[9 5] 
[7 8] 
[7 8] 
[7 0] 
[8 1]] 

print (pd.DataFrame(df.values.reshape(10,2), columns=list('AB'))) 
    A B 
0 1 4 
1 7 1 
2 2 5 
3 8 3 
4 3 6 
5 9 5 
6 7 8 
7 7 8 
8 7 0 
9 8 1 

編輯的評論:

pos = [1,5,7,8,10,8] 

print (pd.DataFrame(np.array(pos).reshape(2,3),columns=list('ABC'))) 
    A B C 
0 1 5 7 
1 8 10 8 
+0

如果你正在傳遞有點像列入數據框,你能同時重塑它嗎?例如,如果pos是我的列表,我得到一個錯誤:pd.DataFrame(pos).reshape(4,5),columns = list('ABCDE')) – yoshiserry

+0

我想你需要將'list'轉換爲numpy數組' pd.DataFrame(np.array(pos).reshape(4,5),columns = list('ABCDE'))' – jezrael

+0

我編輯答案,請檢查它。 – jezrael