2016-10-06 167 views
1

我得到以下錯誤Shape of passed values is (1, 5), indices imply (5, 5)。從我可以告訴的這表明數據集不符合列數,當然它顯然是正確的。最初我以爲這可能是由於使用了一個列表,但如果傳入一個numpy數組,我會遇到同樣的問題。從列表中創建大熊貓數據框

任何人都可以指出我的愚蠢,因爲我明確地做了一些不正確的事情。

data = ['data1', 'data2', 'data3', 'data4', 'data5'] 
report_name = 'test.csv' 
try: 
    df = pd.DataFrame(data, columns=['column1', 'column2', 'column3', 'column4', 'column5'], index=None) 
    df.sort_values('column1', ascending=True, inplace=True) 
    df.to_csv(report_name, index=False) 
except Exception, e: 
    print e 

回答

1

你,如果你通過傳遞columns

data = [['data1', 'data2', 'data3', 'data4', 'data5']] 
df = pd.DataFrame(data, columns=['column1', 'column2', 'column3', 'column4', 'column5']) 
+0

嗯,我嘗試了我認爲是這樣使用numpy的陣列。猜猜我錯誤地理解numpy數組:(太棒了,簡單,當你知道如何:)。感謝您指出 – iNoob

+0

@iNoob,這只是一個細節,因爲您嘗試使用1行創建DataFrame,這不是非常有用。在實踐中,你總是傳遞一個列表或一個2d np數組的列表,所以你不必擔心它 – JMat

0

強制形狀的二維三維數組傳遞給pd.DataFrame的數據你已經錯過了列表括號data

df = pd.DataFrame(data = [data], columns=['column1', 'column2', 'column3', 'column4', 'column5'], index=None) 

注意事項: pd.DataFrame()需要元組列表小號,這意味着:

data = ['data1', 'data2', 'data3', 'data4', 'data5'] 
df = pd.DataFrame(data) 
# This implies every element in the list `data` is a tuple 
print(df) 

Out[]:  0 
     0 data1 
     1 data2 
     2 data3 
     3 data4 
     4 data5 

至於反對:

data = ['data1', 'data2', 'data3', 'data4', 'data5'] 
df = pd.DataFrame([data]) 
# This implies that the list `data` is the first tuple 
print(df) 
Out[]:  0  1  2  3  4 
     0 data1 data2 data3 data4 data5