通过2种不同方式从数组中获取pd.DataFrame

时间:2018-09-29 03:04:35

标签: python pandas dataframe kaggle

我是机器学习的入门者,所以我尝试了kaggle的MINST。我真的对事情的运作方式感到好奇,因为我无法在线找到答案,因此认为在这里发表第一篇文章将是一个好主意。

我在keras上使用CNN做了一个简单的模型。这就是Google colab输出的预测。

Ynew =model.predict_classes(test_data)
Ynew.shape

(28000,)

Ynew

array([2,0,9,...,3,9,2])

现在,我尝试从中制作一个DataFrame,但我真的不明白为什么我可以以一种方式而不是另一种方式制作它。

这个很好用,我得到一张28000x2的桌子:

labels = ["ImageId","Label"]
col= list(range(1,28001))
submission=pd.DataFrame({"ImageId":col,"Label":Ynew})

但是在这一行中,我只能在一排里收拾一切:

submission2=pd.DataFrame(data=[[col,Ynew]],columns=labels)

两种方法都不能相同吗? 希望这篇文章还不错,谢谢!!

2 个答案:

答案 0 :(得分:0)

submission2=pd.DataFrame(data=Ynew, index=col, columns=labels)

答案 1 :(得分:0)

可以通过以下方式创建数据框:

  1. 一维数组,列表,字典或系列的字典的字典
  2. 2-D numpy.ndarray
  3. 构造或记录ndarray
  4. A系列
  5. 另一个DataFrame

参考:pandas-docs

在您的情况下,Ynew是一维数组,loc是列表。恕我直言,您只能像在第一种方法中所做的那样,根据Ynewloc的字典创建数据框。

对于第二种方法,您需要使Ynewloc成为2D数组。

d = np.vstack([loc,Ynew]).T  # you will have (28000,2)
submission2=pd.DataFrame(data = d, columns=labels)