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)

猜你喜欢

转载自blog.csdn.net/LawenceRay/article/details/88667302