【问题标题】:Numpy import from CSV and convert columns to float [duplicate]从 CSV 导入 Numpy 并将列转换为浮点数 [重复]
【发布时间】:2013-05-06 00:36:12
【问题描述】:

好的,所以我从 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')

我想将数组元素转换为浮点数,但出现此错误

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 解决这个问题?

【问题讨论】:

  • 我认为您应该查看问题的根源:您如何读取 CSV 文件。因为这应该能够立即处理它并将其作为浮点数读取。您能否摘录一下您的 CSV 文件的外观?

标签: python csv numpy


【解决方案1】:

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

假设你的数组是a:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-22
      • 2011-07-18
      相关资源
      最近更新 更多