从CSV导入Numpy并将列转换为float

时间:2013-05-11 12:52:32

标签: python csv numpy

好的,所以我有一个从CSV文件加载的numpy数组, 该数组看起来像:

array([['0', '3', '22', ..., '7.25', '1', '0'],
       ['1', '1', '38', ..., '71.2833', '0', '0'],
       ['1', '3', '26', ..., '7.925', '1', '0'],
       ..., 
       ['0', '3', '', ..., '23.45', '1', '0'],
       ['1', '1', '26', ..., '30', '0', '0'],
       ['0', '3', '32', ..., '7.75', '0', '0']], 
      dtype='|S8')

我想将数组元素转换为float但我遇到此错误

data2 = np.array(data).astype(np.float)

Traceback (most recent call last):
  File "<input>", line 1, in <module>
ValueError: could not convert string to float: 

有没有办法用numpy或pandas解决这个问题?

2 个答案:

答案 0 :(得分:3)

我认为你的数组中有一个空字符串('')。因此,将数组的''更改为0

假设您的数组是a

>>> a[a=='']='0'
>>> a2 = a.astype(np.float)

答案 1 :(得分:1)

问题在于具体的价值,而不是Numpy或您的数据。我认为这是导致问题的空字符串,无法将''表示为浮点数。