【问题标题】:Pandas DataFrame to_csv writing [0 0 0 ..., 0 0 0]Pandas DataFrame to_csv 写入 [0 0 0 ..., 0 0 0]
【发布时间】:2017-01-08 19:55:12
【问题描述】:

我正在创建一个包含两列的 DataFrame:一个扁平灰度图像和一个标签。

创建数据框后,一切都正确,所有图像都有正确的值。但是,当我输出到 csv 时,它在 csv 中将一维图像数组写成 [0 0 0 ..., 0 0 0]。对我做错了什么有什么想法吗?

代码大致包括以下内容:

images=[]
labels=[]

#Run the following in a loop
image = ndimage.imread(image_file, flatten=True)
image.resize((500,500), refcheck=False)
image = np.ndarray.flatten(image)
label = 'xyz'
images.append(image)
labels.append(label)

#After the loop ends create a dataframe and save it
df_images = pd.DataFrame({'image':images, 'label':labels})
df_images.to_csv('labeled_images.csv')

.head() 给出以下删减数据:

0  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...  stemmed
1  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...  stemmed
2  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...  stemmed
3  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ...  stemmed

对数据框的长度和最大值的测试表明它已正确填充。

编辑:我在如何将其保存到 csv 方面很灵活,但我更喜欢单列保存图像的像素数据,而单列保存图像的正确标签。主要目标是处理图像并将它们的像素值保存到 csv 中,这样我就不必每次运行分类器时都重新处理和加载。

【问题讨论】:

  • 你真的需要熊猫吗?您可能会对纯 csv 解决方案感兴趣吗?你需要 pandas csv 添加的额外计数器列吗?
  • 我想将数据加载到 pandas 中,因为这涉及更多的数据处理,并最终将图像输入到 sklearn 分类器中。我不需要任何额外的列,只需要图像和标签。
  • 您可以在问题中包含df_images.head() 吗?
  • 这里的问题是您创建了两列,一列用于数据(它是列表的列表),另一列用于列。所以 pandas 每列存储 1 个元素:因此是列表。数据框还可以,只是序列化不行。你能edit你的帖子显示预期的 csv 输出吗?

标签: python csv pandas dataframe


【解决方案1】:

你需要将一个 0 和 1 的列表展开成单独的列,将它们合并到原始数据框中,并删除列表的原始列:

expanded=pd.concat([df_images['image'].apply(pd.Series), df_images], axis=1)
del expanded['image']
#expanded
#   0  1  2  3   label
#0  0  1  1  0 stemmed  
#1  1  0  0  0 stemmed  

【讨论】:

    猜你喜欢
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    相关资源
    最近更新 更多