python报错ValueError: Must pass 2-d input. shape=(5, 1, 10)解决方案

1.承接上一篇博文,上文提到append()函数中的参数ignore_index=True,如果加上该参数,是a.append(b,ignore_index=True),数据不支持的情况下会报错“TypeError: append() takes no keyword arguments”。

2.为了解决这个错误,要把该参数去掉,即a.append(b),但是返回的结果很乱,无法直接做数据分析,就像这样:

3。为了就解决这个问题需要将结果转化为数据框,因为append()之后保存的数据属于列表形式(list),此时需要将list转化为DataFrame。

pd.DataFrame(a)

结果报错,

大概意思是:a中的数据不是2维的,不可以直接转化为DataFrame。

4.后来,我想间接行事,先将list转化为数组(array),再转化为DataFrame。

 np.array(a)

 

结果是这样,是不是顺眼多了。

有个tip需要注意, print(np.array(a))跟直接输出np.array(a)是不一样的,但是只是表现形式不同,格式什么都还是相同的。对比一下,是不是没有逗号了。

 5.好,接下来,继续解决数据形式转化问题,转化数组之后在转化成DataFrame。

pd.DataFrame(np.array(a))

结果依然报错:ValueError: Must pass 2-d input. shape=(5, 1, 10)

好,再来反思,为什么?DataFrame只能接受2维数组,报错提示也提示了我们是3维的数据(5,1,10),现在来思考怎么将3维数据转化成2维的。

6.利用reshape函数。

np.reshape(a,(5,10))

 

 好,已经成功转化为2维数组,reshape()函数中的参数(行,列)按照自己的需要的来,我需要的是(5行10列的数据框)

7.运行成功

pd.DataFrame(np.array(a),columns=['ST',  'AGEP',  'COW',  'ENG',  'MAR',  'SEX',  'ESR',  'WAGP',  '# SCHL',  'class'])

 

 

来源:优秀的华华

物联沃分享整理
物联沃-IOTWORD物联网 » python报错ValueError: Must pass 2-d input. shape=(5, 1, 10)解决方案

发表评论