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'])

 

 

  • 21
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值