Pandas DataFrame to_csv写[0 0 0 ...,0 0 0]

时间:2017-01-08 19:55:13

标签: python csv pandas dataframe

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

创建数据框后,一切正确,所有图像都有正确的值。然而,当我输出到csv时,它在csv 中将1d图像数组字面写为[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中,这样我每次运行分类器时都不必重新处理和加载。

1 个答案:

答案 0 :(得分:0)

您需要将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