Я новичок в анализе данных и ищу помощь. Я создаю свой алгоритм Knn с нуля, используя python. Мне нужно преобразовать один из столбцов моего фрейма данных, который является str, в число с плавающей точкой. Я использую python 2.Вот как выглядит фрейм данных.
sepal_length sepal_width petal_length petal_width CLASS_LABEL
0 6.1 2.9 4.7 1.4 versicolor
1 6.0 2.7 5.1 1.6 versicolor
2 5.4 3.0 4.5 1.5 versicolor
3 5.6 2.5 3.9 1.1 versicolor
Я должен преобразовать столбец CLASS_LABEL str в число с плавающей точкой.Заранее спасибо!
from scipy.io import arff
from io import StringIO
import scipy
import pandas as pd
import numpy as np
import math
train,meta = arff.loadarff(open('train.arff', 'r'))
train = pd.DataFrame(train)
print(train)
print(type(train))
train.CLASS_LABEL = train.CLASS_LABEL.astype('float64')
print(train['CLASS_LABEL'])
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-133-9b34833d2225> in <module>()
2 # train.head()
3 # print(type(train))
----> 4 train.CLASS_LABEL = train.CLASS_LABEL.astype('float64')
5 print(train['CLASS_LABEL'])
/anaconda2/lib/python2.7/site-packages/pandas/util/_decorators.pyc in wrapper(*args, **kwargs)
176 else:
177 kwargs[new_arg_name] = new_arg_value
--> 178 return func(*args, **kwargs)
179 return wrapper
180 return _deprecate_kwarg
/anaconda2/lib/python2.7/site-packages/pandas/core/generic.pyc in astype(self, dtype, copy, errors, **kwargs)
4999 # else, only a single dtype is given
5000 new_data = self._data.astype(dtype=dtype, copy=copy, errors=errors,
-> 5001 **kwargs)
5002 return self._constructor(new_data).__finalize__(self)
5003
/anaconda2/lib/python2.7/site-packages/pandas/core/internals.pyc in astype(self, dtype, **kwargs)
3712
3713 def astype(self, dtype, **kwargs):
-> 3714 return self.apply('astype', dtype=dtype, **kwargs)
3715
3716 def convert(self, **kwargs):
/anaconda2/lib/python2.7/site-packages/pandas/core/internals.pyc in apply(self, f, axes, filter, do_integrity_check, consolidate, **kwargs)
3579
3580 kwargs['mgr'] = self
-> 3581 applied = getattr(b, f)(**kwargs)
3582 result_blocks = _extend_blocks(applied, result_blocks)
3583
/anaconda2/lib/python2.7/site-packages/pandas/core/internals.pyc in astype(self, dtype, copy, errors, values, **kwargs)
573 def astype(self, dtype, copy=False, errors='raise', values=None, **kwargs):
574 return self._astype(dtype, copy=copy, errors=errors, values=values,
--> 575 **kwargs)
576
577 def _astype(self, dtype, copy=False, errors='raise', values=None,
/anaconda2/lib/python2.7/site-packages/pandas/core/internals.pyc in _astype(self, dtype, copy, errors, values, klass, mgr, **kwargs)
662
663 # _astype_nansafe works fine with 1-d only
--> 664 values = astype_nansafe(values.ravel(), dtype, copy=True)
665 values = values.reshape(self.shape)
666
/anaconda2/lib/python2.7/site-packages/pandas/core/dtypes/cast.pyc in astype_nansafe(arr, dtype, copy)
728
729 if copy:
--> 730 return arr.astype(dtype, copy=True)
731 return arr.view(dtype)
732
ValueError: could not convert string to float: setosa