python log()函数TypeError

时间:2016-07-03 06:15:06

标签: python ipython sframe

我有一个名为“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

4 个答案:

答案 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)