Ton*_*ony 6 numpy logarithm python-3.x pandas
我在列中有一个包含价格信息的时间序列price
。当我尝试ln_price
通过取ln
of 列创建新列时,price
出现错误:
AttributeError: 'float' 对象没有属性 'log'
有人可以帮助我理解为什么会这样以及如何解决吗?
谢谢!
df['ln_price'] = np.log(df['price'])
Run Code Online (Sandbox Code Playgroud)
正如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'
Run Code Online (Sandbox Code Playgroud)
您可以通过将 dtype 显式设置为 float 来解决此问题:
>>> np.log(s.astype('float64'))
0 0.0
dtype: float64
Run Code Online (Sandbox Code Playgroud)
在你的情况下:
np.log(df['price'].astype('float'))
Run Code Online (Sandbox Code Playgroud)
注意:您可以使用to_numeric
.
第一个/替代答案:
您np
在范围内有一个浮点变量。
问题在于:
import numpy as np
np = 1
np.log
Run Code Online (Sandbox Code Playgroud)
是完全有效的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'
Run Code Online (Sandbox Code Playgroud)
解决方案是不使用np
变量名或其他流行的导入缩写 pd 或 dt 等。您可以使用 linter 来挑选此类错误。
归档时间: |
|
查看次数: |
10713 次 |
最近记录: |