似乎无法使用pandas to_csv和read_csv来正确读取numpy数组

时间:2018-01-15 21:59:52

标签: python-3.x pandas numpy

问题似乎源于当我尝试在nparray上执行操作时读取带有类型问题的read_csv的csv。以下是最低工作示例。

x = np.array([0.83151197,0.00444986])
df = pd.DataFrame({'numpy': [x]})
np.array(df['numpy']).mean()

Out[151]: array([ 0.83151197,  0.00444986])

这是我所期待的。但是,如果我将结果写入文件然后将数据读回到pandas DataFrame中,则类型会被破坏。

x = np.array([0.83151197,0.00444986])
df = pd.DataFrame({'numpy': [x]})
df.to_csv('C:/temp/test5.csv')
df5 = pd.read_csv('C:/temp/test5.csv', dtype={'numpy': object})
np.array(df5['numpy']).mean()
  

TypeError:/:'str'和'long'

的不支持的操作数类型

以下是“df5”对象

的输出
df5 
Out[186]:     
    Unnamed: 0                      numpy 
 0           0    [0.83151197  0.00444986]

以下是文件内容:

,numpy
0,[ 0.83151197  0.00444986]

我弄清楚如何让它工作的唯一方法是读取数据并手动转换类型,这看起来很傻和慢。

[float(num) for num in df5['numpy'][0][1:-1].split()]

无论如何都要避免上述情况?

1 个答案:

答案 0 :(得分:2)

enc_id | enc_vs | playerCount 32 1,62,12,23 4 期望一维数组对象为pd.DataFrame({'col_name': data})

data

你用In [63]: pd.DataFrame({'numpy': [0.83151197,0.00444986]}) Out[63]: numpy 0 0.831512 1 0.004450 In [64]: pd.DataFrame({'numpy': np.array([0.83151197,0.00444986])}) Out[64]: numpy 0 0.831512 1 0.004450 包裹了numpy数组,所以你传递了一个numpy数组列表:

[]

In [65]: pd.DataFrame({'numpy': [np.array([0.83151197,0.00444986])]}) Out[65]: numpy 0 [0.83151197, 0.00444986] 替换为df = pd.DataFrame({'numpy': [x]})

演示:

df = pd.DataFrame({'numpy': x})