2017-02-15 50 views
3

我想在沒有頭的CSV文件重塑了一些數據,但我不斷收到此錯誤「數據幀」對象有沒有屬性「重塑」

AttributeError: 'DataFrame' object has no attribute 'reshape' 

這是我的劇本,我要重塑數據第2列只有

import pandas as pd 

df = pd.read_csv("test.csv", header=None, usecols=[1]) 

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

這裏是CSV

1,52.1 
2,32.2 
3,44.6 
3,99.1 
5,12.3 
3,43.2 
7,79.4 
8,45.5 
9,56.3 
0,15.4 
1,35.7 
2,23.7 
3,66.7 
4,33.8 
1,12.9 
7,34.8 
1,21.6 
3,43.7 
6,44.2 
9,55.8 

輸出應該是這樣的

[[ 52.1 32.2 44.6 99.1 12.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]] 

任何想法?謝謝

+0

它看起來像你正在尋找堆疊的數據,所以你可能想看看熊貓的數據透視方法。它適用於您的數據,但會導致索引具有太多重複值,因此它不會提供您正在搜索的解決方案。 – RexFuzzle

+0

左側不是索引。它實際上是第一列的數據。 @Psidom的答案就是我想要做的。順便說一句,謝謝你的建議。 =) – Ling

回答

4

pandas.dataframe沒有內置reshape方法,但可以使用.values訪問底層numpy的數組對象,並對其調用reshape

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

#[[ 52.1 32.2 44.6 99.1 12.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]] 
+1

謝謝你的幫助。有效!在此之前我不知道'.values' – Ling