尝试将 log 方法应用于 Python 中的 pandas dataframe 列时出错

2024-02-01

所以,我对 Python 和 Pandas(以及一般编程)非常陌生,但在一个看似简单的函数上遇到了麻烦。因此,我使用通过 SQL 查询提取的数据创建了以下数据框(如果您需要查看 SQL 查询,请告诉我,我将粘贴它)

spydata = pd.DataFrame(row,columns=['date','ticker','close', 'iv1m', 'iv3m'])
tickerlist = unique(spydata[spydata['date'] == '2013-05-31'])

之后,我编写了一个函数,使用数据框中已保存的数据在数据框中创建一些新列:

def demean(arr):
    arr['retlog'] = log(arr['close']/arr['close'].shift(1))

    arr['10dvol'] = sqrt(252)*sqrt(pd.rolling_std(arr['ret'] , 10 ))  
    arr['60dvol'] = sqrt(252)*sqrt(pd.rolling_std(arr['ret'] , 10 ))  
    arr['90dvol'] = sqrt(252)*sqrt(pd.rolling_std(arr['ret'] , 10 ))  
    arr['1060rat'] = arr['10dvol']/arr['60dvol']
    arr['1090rat'] = arr['10dvol']/arr['90dvol']
    arr['60dis'] = (arr['1060rat'] - arr['1060rat'].mean())/arr['1060rat'].std()
    arr['90dis'] = (arr['1090rat'] - arr['1090rat'].mean())/arr['1090rat'].std()
    return arr

我遇到问题的唯一部分是函数的第一行:

arr['retlog'] = log(arr['close']/arr['close'].shift(1))

当我使用此命令运行时,出现错误:

result = spydata.groupby(['ticker']).apply(demean)

Error:

    ---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-196-4a66225e12ea> in <module>()
----> 1 result = spydata.groupby(['ticker']).apply(demean)
      2 results2 = result[result.date == result.date.max()]
      3 

C:\Python27\lib\site-packages\pandas-0.11.0-py2.7-win32.egg\pandas\core\groupby.pyc in apply(self, func, *args, **kwargs)
    323         func = _intercept_function(func)
    324         f = lambda g: func(g, *args, **kwargs)
--> 325         return self._python_apply_general(f)
    326 
    327     def _python_apply_general(self, f):

C:\Python27\lib\site-packages\pandas-0.11.0-py2.7-win32.egg\pandas\core\groupby.pyc in _python_apply_general(self, f)
    326 
    327     def _python_apply_general(self, f):
--> 328         keys, values, mutated = self.grouper.apply(f, self.obj, self.axis)
    329 
    330         return self._wrap_applied_output(keys, values,

C:\Python27\lib\site-packages\pandas-0.11.0-py2.7-win32.egg\pandas\core\groupby.pyc in apply(self, f, data, axis, keep_internal)
    632             # group might be modified
    633             group_axes = _get_axes(group)
--> 634             res = f(group)
    635             if not _is_indexed_like(res, group_axes):
    636                 mutated = True

C:\Python27\lib\site-packages\pandas-0.11.0-py2.7-win32.egg\pandas\core\groupby.pyc in <lambda>(g)
    322         """
    323         func = _intercept_function(func)
--> 324         f = lambda g: func(g, *args, **kwargs)
    325         return self._python_apply_general(f)
    326 

<ipython-input-195-47b6faa3f43c> in demean(arr)
      1 def demean(arr):
----> 2     arr['retlog'] = log(arr['close']/arr['close'].shift(1))
      3     arr['10dvol'] = sqrt(252)*sqrt(pd.rolling_std(arr['ret'] , 10 ))
      4     arr['60dvol'] = sqrt(252)*sqrt(pd.rolling_std(arr['ret'] , 10 ))
      5     arr['90dvol'] = sqrt(252)*sqrt(pd.rolling_std(arr['ret'] , 10 ))

AttributeError: log

我尝试将函数更改为 np.log 以及 math.log,在这种情况下我收到错误

TypeError: only length-1 arrays can be converted to Python scalars

我尝试查找此内容,但没有找到任何直接适用的内容。有什么线索吗?


当列的数据类型不是数字时会发生这种情况。尝试

arr['retlog'] = log(arr['close'].astype('float64')/arr['close'].astype('float64').shift(1))

我怀疑这些数字存储为通用“对象”类型,我知道这会导致日志抛出该错误。这是问题的简单说明:

In [15]: np.log(Series([1,2,3,4], dtype='object'))
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-15-25deca6462b7> in <module>()
----> 1 np.log(Series([1,2,3,4], dtype='object'))

AttributeError: log

In [16]: np.log(Series([1,2,3,4], dtype='float64'))
Out[16]: 
0    0.000000
1    0.693147
2    1.098612
3    1.386294
dtype: float64

你的尝试math.log不起作用,因为该函数仅针对单个数字(标量)设计,而不是列表或数组。

无论如何,我认为这是一个令人困惑的错误消息;无论如何,它曾经让我困惑了一段时间。我想知道是否可以改进。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试将 log 方法应用于 Python 中的 pandas dataframe 列时出错 的相关文章

  • Python,将迭代函数变成递归函数

    我创建了一个输出 4 3 2 1 0 1 2 3 4 的迭代函数 def bounce2 n s n for i in range n print n n n 1 if n lt 0 for i in range s 1 print n n
  • 将 API 数据存储到 DataFrame 中

    我正在运行 Python 脚本来从 Interactive Brokers API 收集金融市场数据 连接到API后 终端打印出请求的历史数据 如何将数据保存到数据帧中而不是在终端中流式传输 from ibapi wrapper impor
  • Python sqlite3游标没有属性commit

    当我运行这段代码时 path Scripts wallpapers single png conn sqlite3 connect Users Heaven Library Application Support Dock desktopp
  • 如何从谷歌云存储桶读取音频文件并在datalab笔记本中使用ipd播放

    我想在数据实验室笔记本中播放我从谷歌云存储桶中读取的声音文件 这个怎么做 import numpy as np import IPython display as ipd import librosa import soundfile as
  • html 解析器 python

    我正在尝试解析一个网站 我正在使用 HTMLParser 模块 问题是我想解析第一个 a href 评论后 但我真的不知道该怎么做 所以我在文档中发现有一个函数叫做handle comment 但我还没有找到如何正确使用它 我有以下内容 i
  • Pyspark 数据框逐行空列列表

    我有一个 Spark 数据框 我想创建一个新列 其中包含每行中具有 null 的列名称 例如 原始数据框是 col 1 col 2 col 3 62 45 null 62 49 56 45 null null null null null
  • 使用 Scipy imsave 将 Numpy 数组保存到图像时保留未更改的数据

    使用 Scipy 保存二维 Numpy 数组 单个值 时toimage or imsave像素值与 Numpy 数组中的像素值不完全匹配 相反 在某些区域 主要是边缘 图像算法似乎使用某种插值 是否有一个选项可以停止插值并保留准确的数据 例
  • Django 的 URL 覆盖率测试为 0%,为什么?

    使用姜戈鼻子 我对 URL 进行了测试 但 URL 覆盖率仍然为 0 为什么 python manage py 测试配置文件 这是我的报道 Name Stmts Miss Cover Missing profiles 0 0 100 pro
  • 如何使用循环将十进制转换为二进制?

    我想编写一个程序 将十进制数 0 到 9 转换为二进制数 我可以编写如何使用重复除法将十进制数转换为二进制数的代码 但是 我在创建一个以二进制格式打印十进制数字 0 到 9 的循环时遇到了麻烦 这是我的代码 number 0 remaind
  • Django - 电子邮件发送两次

    每当我使用如下所示的电子邮件设置从views py调用下面的方法时 电子邮件的两份副本都会发送给收件人 并且我收到如下所示的错误 def sendEmailBasic request msg EmailMessage Request Cal
  • RuntimeError: 预期所有张量都在同一设备上,但发​​现至少有两个设备,cpu 和 cuda:0!使用我的模型进行预测时

    我使用变压器训练了一个序列分类模型 BertForSequenceClassification 我收到错误 预计所有张量都在同一设备上 但发 现至少有两个设备 cpu 和 cuda 0 在方法wrapper index select中检查参
  • Matplotlib 图例不工作

    自从升级 matplotlib 以来 每当尝试创建图例时 我都会收到以下错误 usr lib pymodules python2 7 matplotlib legend py 610 UserWarning Legend does not
  • 如何在 Python 中从 HTML 页面中提取 URL [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我必须用Python 编写一个网络爬
  • smooth_idf 是多余的吗?

    The scikit learn 文档 http scikit learn org stable modules generated sklearn feature extraction text TfidfTransformer html
  • 如何在C++中列出Python模块的所有函数名称?

    我有一个 C 程序 我想导入一个 Python 模块并列出该模块中的所有函数名称 我该怎么做 我使用以下代码从模块中获取字典 PyDictObject pDict PyDictObject PyModule GetDict pModule
  • 使用函数参数作为 R 中新数据框的名称

    这很简单 但我已经搜索并未能找到这个小问题的解决方案 我想使用函数的参数作为新数据框的名称 例如 assign dataset lt function dataname x lt c 1 2 3 y lt c 3 4 5 dataname
  • 大型数据集上的 Sklearn-GMM

    我有一个很大的数据集 我无法将整个数据放入内存中 我想在这个数据集上拟合 GMM 我可以用吗GMM fit sklearn mixture GMM 重复小批量数据 没有理由重复贴合 只需随机采样您认为机器可以在合理时间内计算的尽可能多的数据
  • 如何使用Featuretools按列值从单个数据框中的多个列创建特征?

    我正在尝试根据之前的结果来预测足球比赛的结果 我在 Windows 上运行 Python 3 6 并使用 Featuretools 0 4 1 假设我有以下代表结果历史记录的数据框 原始数据框 https i stack imgur com
  • scipysolve_ivp() 中的访问时间步长

    我有一个常微分方程系统 正在使用 scipy 的solve ivp 函数求解 它运行良好 但我在访问每个步骤中使用的时间步时遇到问题 我知道solve ivp 将当前时间传递给用户定义的函数 但我需要使用的时间步长 而不是当前时间 为了解决
  • 从 pandas 数据框中绘制堆积条形图

    我有数据框 payout df head 10 复制以下 Excel 绘图的最简单 最智能和最快的方法是什么 我尝试过不同的方法 但无法让一切都到位 Thanks 如果您只想要一个堆积条形图 那么一种方法是使用循环来绘制数据框中的每一列 并

随机推荐

  • 为什么 as_const 禁止右值参数?

    我想问为什么as const禁止右值参数 根据 http en cppreference com w cpp utility as constcppreference com 即为什么标准人员这样做 而不是为什么 cppreference
  • Play Framework 2 存储用户密码哈希的最佳方式

    我的应用程序中有一个添加用户选项 我想将用户密码以哈希格式存储在数据库中 密码以纯文本格式存储在框架附带的示例代码中 经过一番搜索后 我发现 play2 中实现了一个 Crypto encryptAES 函数 可用于保护密码 我的问题是使用
  • Chrome 调试器,水平滚动条在悬停时阻止变量值

    这种情况已经发生了几个星期了 在网上找不到任何东西 有人知道发生了什么事以及如何解决它吗 Screenshot 注意 我将鼠标悬停在包含字符串的变量上 这里真正的解决方法是在控制台窗口中放大 缩小 或者使用 Ctrl 0 重置缩放
  • 当 C++ 线程退出时,内存是否保持分配状态?

    我在 Linux 上使用 pthread 库 我在线程 A 中分配一个字符串 然后尝试在线程 B 中打印该字符串 但是 该字符串只是打印出空 我已经验证它在线程 A 中工作 注意 该字符串驻留在一个对象内 我怀疑该对象可能会被清理或重新实例
  • Vim 中的自动换行(保留缩进)

    我只是在看这个帖子 https stackoverflow com questions 744159 word wrap in gvim描述了如何在 vim 中将整个单词换行 接受的解决方案是这样的 set formatoptions l
  • 如何仅在 SQL Server 中选择未提交的行?

    我正在从事 DW 项目 我需要查询实时 CRM 系统 标准隔离级别会对性能产生负面影响 我很想使用未提交读取的无锁 事务隔离级别 我想知道有多少选定的行被脏读识别 也许你可以这样做 SELECT FROM T WITH SNAPSHOT E
  • JConsole 通过 ssh 本地端口转发

    我希望能够远程连接到公开了 JMX 的 Java 服务 但它被防火墙阻止了 我尝试使用 ssh 本地端口转发 但连接失败 查看wireshark 当您尝试连接jconsole时 它似乎在连接到端口9999后希望通过一些临时端口进行连接 这些
  • 创建动态实现接口的类

    我正在尝试编写一段代码 允许用户加载程序集 DLL 文件 在所述程序集中选择一个接口 然后生成一个继承该接口的类 并带有所有必需方法的存根 该类将生成到文件中或活动的 VS 会话中 该代码旨在在通过自定义模板创建项目期间初始化的 IWiza
  • StackView isHidden 属性未按预期更新

    我正在尝试更新UIStackView以便显示一个字段 如果 a 的值UITextField equal Other 这是我的代码 IBOutlet var stackView UIStackView func updateView prin
  • 附加到不带标题的 CSV 文件

    我在用opencsv http opencsv sourceforge net 将 Java bean 写入带有标题的 CSV 文件 文件名包含当前日期 如果用户在同一天第二次运行它 它会追加到文件中 但会添加另一个标题行 如何附加到文件但
  • jqGrid for Twitter Bootstrap [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 仅在 50 毫秒后显示微调器

    我有一个页面 其中发生了很多 ajax 操作 我显示了一个微调器来指示正在处理请求 其中一些请求需要很长时间 而另一些请求则很快 当响应来得很快时 那些旋转器就更像是一种麻烦而不是一种帮助 这就是我想要的 仅当请求提交后超过 50 毫秒时才
  • cefsharp如何拦截xhr请求以获取响应正文值?

    CefSharp是否能够拦截XHRHttpRequest并获取响应正文值 如果是 我想知道它是如何完成的 我为此创建了以下类并从中返回它的实例IRequestHandler GetResourceResponseFilter interna
  • StringConcatFactory 中的策略

    我知道 invokedynamic 指令 我也知道它的实现的基本过程 但当我到达代码时 我无法理解其中的代码StringConcatFactory 能告诉我这六种策略的源码是如何实现的吗 也只完成了默认策略 作为一名大学生 我无法下源代码
  • CountDownTimer 更新和阻塞

    如果正确理解 CountDownTimer 它不会在启动它的活动的单独线程上运行 那么这是否意味着如果我在主活动中启动 CountDownTimer 并且稍后在该活动中阻塞另一段代码 这是否意味着 CountDownTimer 将不再更新
  • Oracle DBMS_LOB.WRITEAPPEND 到 Postgres 转换

    有人可以告诉我如何将下面的 Oracle 代码转换为 Postgresql IF prodNum 1 THEN DBMS LOB WRITEAPPEND pkgFilterNode LENGTH pkgFilter tab
  • 将 geoNear 查询与另一个值查询结合起来

    我有一个使用 node js mongodb 和 mongoose 实现的地理数据 api 我想用两个条件查询我的数据 首先 我使用 geoNear 来获取给定半径内的所有位置 效果很好 其次 我想按类型进一步过滤位置 这是我的架构 var
  • 美化 PHP 上以字符串形式存储的 HTML

    我的变量中有一个字符串 html包含精简的 HTMl 代码 全部在一行中 例如 html div p hello p div 如何美化 漂亮地打印 HTML 以便我的变量变成这样 html div p hello p div 我知道tidy
  • document.form.submit();不会在 Safari 中提交

    我正在使用 JavaScript 函数来提交我的表单 这适用于除 safari 之外的所有浏览器 我不明白为什么 我的 JavaScript 函数看起来像这样 function submitForm var selectBox sel gu
  • 尝试将 log 方法应用于 Python 中的 pandas dataframe 列时出错

    所以 我对 Python 和 Pandas 以及一般编程 非常陌生 但在一个看似简单的函数上遇到了麻烦 因此 我使用通过 SQL 查询提取的数据创建了以下数据框 如果您需要查看 SQL 查询 请告诉我 我将粘贴它 spydata pd Da