Python pd.DataFrame以两种不同的方式从阵列中删除
我开始学习机器,所以我试着从kaggle学习MINST。我真的很好奇事情是如何运作的,所以,因为我在网上找不到答案,所以我想在这里发表我的第一篇文章是个好主意 我在keras上和CNN做了一个简单的模型。这将是谷歌colab输出的预测Python pd.DataFrame以两种不同的方式从阵列中删除,python,pandas,dataframe,kaggle,Python,Pandas,Dataframe,Kaggle,我开始学习机器,所以我试着从kaggle学习MINST。我真的很好奇事情是如何运作的,所以,因为我在网上找不到答案,所以我想在这里发表我的第一篇文章是个好主意 我在keras上和CNN做了一个简单的模型。这将是谷歌colab输出的预测 Ynew =model.predict_classes(test_data) Ynew.shape (28000,) 数组([2,0,9,…,3,9,2]) 现在我试着用这个来制作一个数据帧,但我真的不明白为什么我可以用一种方式而不是另一种方式来制作它 这个很好
Ynew =model.predict_classes(test_data)
Ynew.shape
(28000,)
数组([2,0,9,…,3,9,2])
现在我试着用这个来制作一个数据帧,但我真的不明白为什么我可以用一种方式而不是另一种方式来制作它
这个很好,我有一张28000x2的桌子:
labels = ["ImageId","Label"]
col= list(range(1,28001))
submission=pd.DataFrame({"ImageId":col,"Label":Ynew})
但这一次,我把所有东西都挤在了一排:
submission2=pd.DataFrame(data=[[col,Ynew]],columns=labels)
这两种方法不应该是一样的吗?
希望帖子没有那么糟糕,谢谢你 数据帧可以从以下位置创建:
submission2=pd.DataFrame(data=Ynew, index=col, columns=labels)
Ynew
是一个1D数组,loc
是一个列表。IMHO,您只能从Ynew
和loc
的dict创建数据帧,就像您在第一种方法中所做的那样
对于第二种方法,您需要将Ynew
和loc
设置为2D ndarray
d = np.vstack([loc,Ynew]).T # you will have (28000,2)
submission2=pd.DataFrame(data = d, columns=labels)
第二种方法是,括号可能太多。data=[col,Ynew]??谢谢@bakka我在没有双括号的情况下尝试过,但我得到了错误“2列通过,通过的数据有28000列”。我还更改了范围(128001),不包括list命令。有什么想法吗?是的,你是对的。执行[col,Ynew]将给出等于(228000)数组的列表列表。您可以修改列表,但我认为创建2D-ndarray更容易。谢谢您的帮助。我尝试了一些小的调整(我不能使用标签,因为它有2个元素),得到了这个结果
submission2=pd.DataFrame(data=Ynew,index=col,columns=[“labels”])
submission2.index.rename(“ImageID”,inplace=True)
实际上它工作得很好,但kaggle不允许我上传带有索引的文件,我需要两列。非常感谢您为我的问题花时间。这非常有效:)
d = np.vstack([loc,Ynew]).T # you will have (28000,2)
submission2=pd.DataFrame(data = d, columns=labels)