2016-10-06 119 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