2017-02-13 35 views
3

我需要一些關於使用熊貓對2列數據進行整形的幫助。使用熊貓對2列數據進行整形

我有這個csv文件(test.csv)

Axe Break Chaplin 
1 52.1 ty 
2 32.2 ty 
3 44.6 ty 
3 99.1 ty 
5 122.3 ty 
3 43.2 ty 
7 79.4 ty 
8 45.5 ty 
9 56.3 ty 
0 15.4 ty 
1 35.7 ty 
2 23.7 ty 
3 66.7 ty 
4 33.8 ty 
1 12.9 ty 
7 34.8 ty 
1 21.6 ty 
3 43.7 ty 
6 44.2 ty 
9 55.8 ty 
4 22.4 ty 
3 55.6 ty 
2 11.4 ty 
5 54.6 ty 
6 19.7 ty 
7 23.5 ty 
1 12.8 ty 
6 34.6 ty 
8 69.6 ty 
9 55.8 ty 

期望的結果是這樣的

[[ 52.1 32.2 44.6 99.1 122.3] 
[ 43.2 79.4 45.5 56.3 15.4]] 
[[ 35.7 23.7 66.7 33.8 12.9] 
[ 34.8 21.6 43.7 44.2 55.8]] 
[[ 22.4 55.6 11.4 54.6 19.7] 
[ 23.5 12.8 34.6 69.6 55.8]] 
ty 

我已經嘗試過,並在下面的示例腳本

import pandas as pd 
import numpy as np 

df = pd.read_csv("test2.csv") 

def arrange1(): 
    start = 0 
    for i in range(0, len(df.index)): 
     if (i + 1)%10 == 0: 
      result = df['Break'].iloc[start:i+1].reshape(2,5) 
      start = i + 1 
      print result 
    print "ty" 

arrange1() 

雖然這個腳本的確提供了我想要的結果,我覺得還有另外一種方法可以使用Pandas。

我希望我沒有做

print "ty" 

謝謝您的幫助。

[UPDATE]

我很抱歉沒有澄清我想要的東西。我想要得到的結果就像我在末尾打印的「ty」所示的結果,但我不想在該腳本中編寫

print "ty" 

。換句話說,

print result 

將顯示此輸出

[[ 52.1 32.2 44.6 99.1 122.3] 
[ 43.2 79.4 45.5 56.3 15.4]] 
[[ 35.7 23.7 66.7 33.8 12.9] 
[ 34.8 21.6 43.7 44.2 55.8]] 
[[ 22.4 55.6 11.4 54.6 19.7] 
[ 23.5 12.8 34.6 69.6 55.8]] 
ty 

回答

0

使用此:

df.Break.values.reshape(3, 2, -1) 

array([[[ 52.1, 32.2, 44.6, 99.1, 122.3], 
     [ 43.2, 79.4, 45.5, 56.3, 15.4]], 

     [[ 35.7, 23.7, 66.7, 33.8, 12.9], 
     [ 34.8, 21.6, 43.7, 44.2, 55.8]], 

     [[ 22.4, 55.6, 11.4, 54.6, 19.7], 
     [ 23.5, 12.8, 34.6, 69.6, 55.8]]]) 

或者,如果你需要列出

df.Break.values.reshape(3, 2, -1).tolist() 

[[[52.1, 32.2, 44.6, 99.1, 122.3], [43.2, 79.4, 45.5, 56.3, 15.4]], 
[[35.7, 23.7, 66.7, 33.8, 12.9], [34.8, 21.6, 43.7, 44.2, 55.8]], 
[[22.4, 55.6, 11.4, 54.6, 19.7], [23.5, 12.8, 34.6, 69.6, 55.8]]] 
+0

感謝您的建議,但我忘了提及我想在最後加入「ty」矩陣,但我不想使用「print」ty「」。我已經更新了這個問題。 – Fang