2016-07-03 2 views
1

У меня есть набор данных, называемый «продажами», который является SFrame. есть столбец под названием «sqft_living», и я хочу преобразовать его в значение журнала. тип данных столбца - float. но когда я пытаюсь преобразовать его с функцией log(), он запрашивает float, хотя его уже поплавок. вот скриншот кодов и ошибок. не могли бы вы помочь мне найти проблему и преобразовать столбец в журналФункция python log() TypeError

a=train_data['sqft_living'] 
a 

result of a 
dtype: float 
Rows: 17384 
[1180.0, 2570.0, 770.0, 1960.0,...] 

это показывает, что «а» плавать

тогда я использовал ниже код для преобразования входа значения, чтобы новый столбец называется 'log_sqft_living'

train_data['log_sqft_living']= log(a) 

, но это дает ниже ошибки

--------------------------------------------------------------------------- 
TypeError         Traceback (most recent call last) 
<ipython-input-23-6de995ee575f> in <module>() 
----> 1 train_data['log_sqft_living']= log(a) 

TypeError: a float is required 
+0

Пожалуйста, не публикуйте код и не выводите его в виде изображений. Через несколько месяцев это изображение может исчезнуть, и тогда ваш вопрос не поможет никому другому в той же ситуации. Измените свой вопрос, чтобы включить текст вашего сеанса IPython. –

+0

'a' - это список. Не поплавок. И, пожалуйста, не включайте изображения. Вставьте весь код здесь. – Rahul

+0

Большое спасибо за ответ. Я редактировал сообщение. любая помощь была бы действительно оценена –

ответ

0

Использование Python 3.5 в Windows 10 с использованием оболочки Python

Как указал Рахул, a - это список.
Вы можете взять элемент списка, как показано ниже, и она будет работать:

>>> import math 
>>> train_data=[12.1, 14.5, 56.5, 43.2] 
>>> a=train_data 
>>> a 
[12.1, 14.5, 56.5, 43.2] 
>>> another_train_data=math.log(a[1]) 
>>> another_train_data 
2.6741486494265287 
>>> 
+0

спасибо большое за ваши ответы –

+0

Добро пожаловать. Пожалуйста, подтвердите свой ответ, если вы сочтете это полезным. Благодарю. – tale852150

2

numpy.log может использоваться с массивом

>>> import numpy 
>>> a = numpy.array([180.0, 2570.0, 770.0, 1960.0]) 
>>> b = numpy.log(a) 
>>> b 
array([ 5.19295685, 7.85166118, 6.64639051, 7.58069975]) 
+0

Мне нравится ваш ответ. Я поддержал это ... – tale852150

1

В вашем примере, a является SArray типа поплавка , Он не может быть передан какой-либо функции, которая принимает float. Однако вы можете применить любую функцию, которая принимает поплавок в SArray следующим образом:

import math 
log_a = a.apply(math.log) 
Смежные вопросы