Как указывает 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
.
Первый / альтернативный ответ:
У вас есть переменная типа float 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 и т. д. Вы можете подобрать такую ошибку, используя linter,