AttributeError: 'int' object has no attribute 'log'

我们有时候在对组数进行操作时候,偶尔会出现这个问题.

比如:

复制代码
#coding:utf-8
import pandas as pd
import numpy as np

if __name__ == '__main__':
    np.random.seed(0)
    df = pd.DataFrame(100 + np.random.randn(100).cumsum(), columns=['weight'])
    df['pct_change'] = df.weight.pct_change()
    df['w_log'] = np.log(np.asarray(df['weight']+2 , dtype=object))
    print df['w_log']
复制代码

会出现这个问题:

   df['w_log'] = np.log(np.asarray(df['weight']+2 , dtype=object))
AttributeError: 'float' object has no attribute 'log'

这个问题的原因是object没有log操作:上述操作等同于

np.log(np.array([x], dtype=object)) <-> np.array([x.log()], dtype=object)

那么我们该怎么样来修正呢?
复制代码
#coding:utf-8
import pandas as pd
import numpy as np

if __name__ == '__main__':
    np.random.seed(0)
    df = pd.DataFrame(100 + np.random.randn(100).cumsum(), columns=['weight'])
    df['pct_change'] = df.weight.pct_change()
    df['w_log'] = np.log(np.asarray(df['weight']+2 , dtype=float))
    print df['w_log']
复制代码

将object对象,改成base类型就可以了. 

结果:

复制代码
0     4.642120
1     4.645969
2     4.655321
3     4.676410
4     4.693652
5     4.684666
6     4.693403
7     4.692016
8     4.691069
9     4.694830
10    4.696146
11    4.709337
12    4.716171
复制代码

完.

posted @   龚细军  阅读(4175)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2014-01-05 HDUOJ----2063过山车
2014-01-05 HDUOJ------Worm
2014-01-05 HDUOJ-------2149Public Sale
点击右上角即可分享
微信分享提示