ValueError:无法将字符串转换为float:' 62,6'

时间:2017-09-18 14:43:17

标签: python pandas numpy valueerror

我正在尝试将数据帧转换为numpy数组:

dataset = myset.values
X = np.array(dataset[0:,6:68], dtype="float32")
X[0:5,0:]

Here is a piece of the data

这是一个错误:

-----------------------------------------------------------------------

----
ValueError                                Traceback (most recent call last)
<ipython-input-162-4b67608047d1> in <module>()
      1 dataset = myset.values
----> 2 X = np.array(dataset[0:,6:68], dtype="float32")
      3 X[0:5,0:]

ValueError: could not convert string to float: '62,6'

哪里有问题?

3 个答案:

答案 0 :(得分:2)

尝试使用replace ,.

dataset = myset.replace(',','.', regex=True).values

或者在read_csv中使用参数decimal,转换为浮点数中的.

dataset = pd.read_csv('file', decimal=',')

答案 1 :(得分:0)

在Python(或基本上任何今天使用的编程语言)中,点(.)用于小数点,而不是逗号(,),所以你应该用点替换逗号你正在处理的字符串。

答案 2 :(得分:0)

有些使用'。'的语言环境。作为小数点分隔符,“,”作为千位分隔符。 也有使用“,”作为小数点分隔符和“。”的语言环境。作为千位分隔符。

执行简单的字符串替换会给您带来各种麻烦。您需要

import locale

然后指定您要使用的语言环境,例如

locale.setlocale(locale.LC_NUMERIC, 'german')

然后您可以使用

locale.atof('1.337,3')