dataframe、series和ndarray的操作

博客围绕Python中对象合并及写入文件的问题展开。提到numpy.ndarray结果转换,dataframe对象类型问题的解决方式,合并时需对象有公共部分,还指出操作中索引值不匹配、字段删除等导致的写入问题,并给出解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值