我有一个名为“sales”的数据集,它是一个SFrame。 有一个名为“sqft_living”的列,我想将其转换为日志值。列的数据类型是float。但是当我尝试使用log()函数转换它时,它会询问浮点数,尽管它已经是浮点数。 这是代码和错误的屏幕截图。你能帮我找到问题并将列转换成日志
a=train_data['sqft_living']
a
result of a
dtype: float
Rows: 17384
[1180.0, 2570.0, 770.0, 1960.0,...]
这表明“a”是浮动
然后我使用下面的代码将日志值转换为名为'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 :(得分: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])
答案 1 :(得分:1)
在您的示例中,a
是float类型的SArray。它不能传递给任何带浮点数的函数。但是,您可以将任何带浮点数的函数应用于SArray:
import math
log_a = a.apply(math.log)
答案 2 :(得分:0)
使用Python shell在Windows 10上使用Python 3.5
正如Rahul所指出的那样,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
>>>
答案 3 :(得分:0)
如果您需要获取SFrame的日志,则需要执行以下操作:
from math import log
train_data['sqft_living'].apply(log)