保存pandas dataframe到csv时如何保持numpy数组

时间:2017-03-13 01:14:24

标签: python csv pandas numpy

我有一个pandas.DataFrame,其中一列是图像。该列的每一行都是2d numpy.array的图像。我已使用DataFramecsv保存到pandas.DataFrame.to_csv()文件中。但是,当我打开csv文件时,该列将变为字符串而不是numpy.array

如何阅读csv文件并保留numpy.array

1 个答案:

答案 0 :(得分:2)

要从csv文件中读取numpy.array,您可以为pandas.read_csv提供转换器功能。

<强>代码:

import ast
import numpy as np
def from_np_array(array_string):
    array_string = ','.join(array_string.replace('[ ', '[').split())
    return np.array(ast.literal_eval(array_string))

测试代码:

import numpy as np
import pandas as pd

image = np.array([[0.1, 0.2], [0.3, 0.4]])
df = pd.DataFrame(
    [['image name1', image],
     ['image name2', image],
     ],
    columns=['names', 'images']).set_index('names')
print(df)
df.to_csv('sample.csv')

df2 = pd.read_csv('sample.csv', converters={'images': from_np_array})
print(df2)

<强>结果:

                               images
names                                
image name1  [[0.1, 0.2], [0.3, 0.4]]
image name2  [[0.1, 0.2], [0.3, 0.4]]

         names                    images
0  image name1  [[0.1, 0.2], [0.3, 0.4]]
1  image name2  [[0.1, 0.2], [0.3, 0.4]]