pd.DataFrame 以 2 种不同的方式来自数组

pd.DataFrame from an array in 2 different ways

我开始学习机器学习,所以我尝试了 kaggle 的 MINST。我真的很好奇事情是如何运作的,因为我无法在网上找到答案,我认为在这里制作我的第一个 post 是个好主意。

我在 keras.This 上用 CNN 做了一个简单的模型将是 google colab 输出的预测。

Ynew =model.predict_classes(test_data)
Ynew.shape

(28000,)

Ynew

数组([2, 0, 9, ..., 3, 9, 2])

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

这个很好用,我得到一个 table 28000x2:

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

但是在这一行中,我把所有东西都挤在了 1 行中:

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

两种方法不应该一样吗? 希望 post 没有那么糟糕,谢谢!!

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

Dataframe 可以从以下位置创建:

  1. 一维数组、列表、字典或系列的字典
  2. 二维numpy.ndarray
  3. 结构化或记录ndarray
  4. A系列
  5. 另一个DataFrame

参考:pandas-docs

在你的例子中,Ynew 是一维数组,loc 是一个列表。恕我直言,您只能从 Ynewloc 的字典创建数据框,就像您在第一种方法中所做的那样。

对于第二种方法,你需要让Ynewloc成为2D-ndarray。

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