dataframe、series和ndarray的操作

pd.merge合并的时候,首先要求是dataframe对象或者是series对象
Can only merge Series or DataFrame objects,a <class 'numpy.ndarray'> was passed
这里我的numpy.ndarray是result = model.predict(test_data)返回的结果
ndarray如何转dataframe呢,如下:pd.Dataframe(ndarray)

同理,ndarrayseries时,可以:pd.Series(ndarray)

有些时候dataframe对象的类型为object时,也可以用上述方式解决,只需在后面加一句dtype=np.float即可

其次,要求两个dataframe或者series有公共的columns,否则
No common columns to perform merge on. Merge options: left_on=None, right_on=None, left_index=False, right_index=False

使用concat时遇到

first argument must be an iterable of pandas objects, you passed an object of type "Series"

是因为没有将需要合并的字段用[]括起来。(如何判断对象是否是可迭代对象可以用一下方法)

isinstance('abc',Iterable)

除此之外,还可修改第二个参数,判断是否是某一类型的对象。

加上[]之后还是没正常输出,为什么呢?因为我在操作时,将Dataframeindex=0的行删除了,但是predict返回的ndarray是从0开始计数的,因为索引值不匹配导致出错。并且还有可能出现hashtable之类的问题。

这里我的问题是ndarray的初始index是从0开始,然后,因为我删除了类型为dataframe的id字段的index=0行,所以导致写如文件时,一直写不进去。最后还是使用reset_index解决了。

id = id.copy().reset_index(drop=True)
file = pd.concat([id,final],axis=1)

最后写入csv时,去除原始index需要这样

file.to_csv('res.csv',index=None)
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值