“浮动”对象没有属性“日志”

时间:2019-07-02 21:00:46

标签: python-3.x pandas numpy logarithm

我在price列中有一个包含价格信息的时间序列。当我尝试使用列ln_price的{​​{1}}创建新列ln时,出现错误:

  

AttributeError:“浮动”对象没有属性“ log”

有人可以帮助我理解为什么会这样以及如何解决吗?

谢谢!

price

2 个答案:

答案 0 :(得分:0)

warren-weckesser指出,如果您使用dtype对象,也会发生这种情况(实际上这可能是您面临的问题):

>>> s = pd.Series([1.0], dtype='object')
>>> s
0    1
dtype: object
>>> np.log(s)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'float' object has no attribute 'log'

您可以通过将dtype设置为显式浮动来解决此问题:

>>> np.log(s.astype('float64'))
0    0.0
dtype: float64

在您的情况下:

np.log(df['price'].astype('float'))

注意:您可以使用to_numeric进行更多控制。


第一个/替代答案:

您在范围内有一个浮点变量np

问题在于:

import numpy as np
np = 1
np.log

是完全有效的python。

>>> import numpy as np
>>> np = 1.
>>> np.log
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'float' object has no attribute 'log'

解决方案是不要使用np是变量名或其他流行的导入缩写pd或dt等。 您可以使用短绒棉绒捡起这种错误。

答案 1 :(得分:0)

问题不在您发布的代码之外。您的代码有效。至少如果我假设df是字典。但是我不能假设其他任何事情,因为您的问题没有具体说明。

import numpy as np

df = {'price': 10.0}
df['ln_price'] = np.log(df['price'])

print(df)
{'price': 10.0, 'ln_price': 2.3025850929940459}