在 python 中滚动 idxmax() ?

2024-01-17

我有一个 python DataFrame,其中包含一些财务数据,我正在尝试为其创建一些技术指标。我试图弄清楚如何使用移动窗口函数来加速该过程,而不是逐个元素地进行。对于每个索引,我想返回过去 30 天的最大索引。我已经实现了一个逐个元素的解决方案,但正如你可以想象的那样,它非常慢。

    for s_sym in ls_symbols:
        for i in range(refresh, len(ldt_timestamps)):
            #Aroon-Up = ((period - Days Since High)/period) x 100 Aroon-Down = ((period - Days Since Low)/peiod) x 100'''
            whrmax = df_close[s_sym].ix[ldt_timestamps[i-uplen:i]].idxmax()
            maxaway = (df_close[s_sym].ix[whrmax : ldt_timestamps[i-1]]).count()
            aroonup = ((uplen - maxaway) / uplen ) * 100

            whrmin = df_close[s_sym].ix[ldt_timestamps[i-dnlen:i]].idxmin()
            minaway = df_close[s_sym].ix[whrmin : ldt_timestamps[i-1]].count()
            aroondn = ((dnlen - minaway) / dnlen ) * 100

如何创建自定义滚动窗口函数?


请参阅以下位置的文档:

http://pandas.pydata.org/pandas-docs/dev/computation.html#moving-rolling-statistics-moments http://pandas.pydata.org/pandas-docs/dev/computation.html#moving-rolling-statistics-moments

还有一些很好的例子:

http://pandas.pydata.org/pandas-docs/dev/cookbook.html#grouping http://pandas.pydata.org/pandas-docs/dev/cookbook.html#grouping

In [18]: df = DataFrame(randn(1000,4),index=pd.date_range('20000101',periods=1000),
                 columns=list('ABCD'))

In [19]: pandas.stats.moments.rolling_apply(df,30,lambda x: Series(x).idxmax())
Out[19]: 
<class 'pandas.core.frame.DataFrame'>
DatetimeIndex: 1000 entries, 2000-01-01 00:00:00 to 2002-09-26 00:00:00
Freq: D
Data columns (total 4 columns):
A    971  non-null values
B    971  non-null values
C    971  non-null values
D    971  non-null values
dtypes: float64(4)

In [47]: pandas.stats.moments.rolling_apply(df,30,lambda x: Series(x).idxmax()).tail(30)
Out[47]: 
             A   B   C   D
2002-08-28  24   3  26  21
2002-08-29  23   2  25  20
2002-08-30  22   1  24  19
2002-08-31  21   0  23  18
2002-09-01  20   6  29  17
2002-09-02  19   5  28  16
2002-09-03  18   4  27  15
2002-09-04  17   3  26  14
2002-09-05  16   2  25  13
2002-09-06  15   1  24  12
2002-09-07  14   0  23  11
2002-09-08  13  13  22  10
2002-09-09  12  12  21   9
2002-09-10  11  11  20   8
2002-09-11  10  10  19   7
2002-09-12   9   9  18   6
2002-09-13   8   8  17   5
2002-09-14   7   7  16   4
2002-09-15   6   6  15   3
2002-09-16   5   5  14   2
2002-09-17   4   4  13   1
2002-09-18   3   3  12   0
2002-09-19   2   2  11  11
2002-09-20   1   1  10  10
2002-09-21   0   0   9   9
2002-09-22  27  25   8   8
2002-09-23  26  24   7   7
2002-09-24  25  23   6   6
2002-09-25  24  22   5   5
2002-09-26  23  29   4   4

仅供参考,您可能几乎肯定只使用会更好rolling_max(df,30)获得特定范围内的最大值,这就是我猜你想要的

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

在 python 中滚动 idxmax() ? 的相关文章

随机推荐

  • 使用 json 响应时出现 406 错误

    我正在尝试通过 batman rails gem 使 Rails 应用程序与 node js 框架 batman js 一起运行 当我在 Rails 控制器中使用 json 进行响应时 每次都会收到 406 错误 但我不知道为什么 这是我的
  • Java列表中如何通过对象的属性获取对象的索引

    我想通过 Java 中的属性获取列表中对象的索引 例子 List
  • Grails,如何获取请求对象

    Grails 有一个定义的 request 对象here http grails org doc 2 2 1 ref Servlet 20API request html 问题是当我尝试使用它时 我得到 No such property r
  • 在RobotFramework中访问列表内的Dictionary元素显示错误列表对象没有属性

    这是程序代码 我有一个json文件code json 其结构如下 键 值 键 值 当我将列表元素转换为字典时 它会抛出错误 Settings Library JSONLibrary Library OperatingSystem Libra
  • 在 matplotlib 中绘制 Python networkx 图表时出现混乱

    我正在测试如何在 networkx 上创建网络图 我的问题是 当我尝试使用 matplotlib 绘制这些图表时 节点 边缘和标签显得混乱 我希望将标签附加到右侧节点 并且希望边缘看起来像连接节点 code import networkx
  • 检查字符串是否包含子字符串

    如何使用 Perl 检查给定字符串是否包含某个子字符串 更具体地说 我想看看是否s1 domain example存在于给定的字符串变量中 要查明字符串是否包含子字符串 您可以使用index http perldoc perl org fu
  • Haskell 中具有多个构造函数的记录类型

    很多时候 当我使用 Haskell 编写某些内容时 我需要具有多个构造函数的记录 例如 我想开发某种逻辑方案建模 我想到了这样的类型 data Block a Binary binOp a gt a gt a opName String i
  • Hibernate 抓取条件被忽略

    我有一些与 LoginSession 类具有一对多关系的 User 类 我的 User 类中有一个 LoginSession 集合 Entity name T User public class User OneToMany fetch F
  • javascript中判断对象是否有属性和值

    我想检查一个对象是否具有某物的属性并且其值是否等于某个值 var test name joey age 15 name hell age 12 就是这样 一个对象数组 现在我想在对象内部进行搜索 如果该对象包含我想要的内容 则返回 true
  • 非阻塞 multiprocessing.connection.Listener?

    我使用 multiprocessing connection Listener 进行进程之间的通信 它对我来说很有魅力 现在我真的很喜欢我的主循环在客户端命令之间做其他事情 不幸的是 listener accept 会阻止执行 直到建立来自
  • 你会如何设计一个可破解的网址

    想象一下 您有一组以良好的树形层次结构组织的产品类别 并且您希望提供可修改的 URL 来浏览这些产品类别 你可以做这样的事情 catalog categorya categoryb categoryc 然后 您可以很容易地找出应该列出产品的
  • 如何删除具有指针成员的类的指针?

    我的意思是 如果我有这样的课程 class A int pi A pa 当我打电话时delete pa will pi被删除 您需要定义一个析构函数来delete pi 此外 您还需要定义复制构造函数和赋值运算符 否则当实例A被复制的两个对
  • 将 Google Play 游戏与 Firebase 混合使用

    我使用 google games api 将排行榜添加到我的 android 游戏中 现在我想使用 Android Studio 的 Firebase 向导 添加横幅广告 它构建得很好 但是当我尝试创建 apk 时 出现以下错误 错误 将字
  • Linux,需要准确的程序计时。调度程序唤醒程序

    我有一个在 Linux 系统上运行的线程 我需要以尽可能准确的时间间隔执行它 例如 每毫秒执行一次 目前 这是通过创建一个计时器来完成的 timerfd create CLOCK MONOTONIC 0 然后在结构中传递所需的睡眠时间 ti
  • 使用 R 中的 glmulti 包对 akaike 权重进行穷举搜索多元回归

    我想知道是否有人可以帮助我理解为什么当我在 R 中输入脚本时收到错误消息 对于一些背景信息 我正在研究6 个不同变量的效果 我认为是 63 种组合或模型 X 对于我的环境科学荣誉项目 在不同空间尺度上分别具有初级总产量和生态系统净产量 Y
  • 参考应用程序xml资源中的android库项目xml资源

    我有一个定义 XML 资源的 Android 库项目 让我们使用可绘制选择器作为示例 但我在字符串 样式等方面遇到问题 LibProject res drawable button selector xml 定义一个选择器 LibProje
  • Mongo 查找器和标准

    我在 Rails 应用程序中使用 MongoDB 和 Mongoid 映射器 但我不明白finders and criteria的查询 例如在 mongodb 文档中的部分Finders是查询Model all 但如果我使用它 例如User
  • 如何使用 Cypress 检查可能不存在的元素

    我正在编写 Cypress 测试来登录网站 有username and password字段和一个Submit按钮 大多数登录都很简单 但有时首先会出现一个警告对话框 必须将其关闭 我试过这个 cy get login username t
  • 浮点数在CPU内部是如何存储的?

    我是一名初学者 正在学习组装基础知识 现在 我在读这件事的时候 来到了这一段 它解释了浮点数如何存储在内存中 浮点数的指数是一个 8 位字段 允许大量或 要存储的小数 指数被解释为正数或 消极的 实际指数是 8 位字段的值减去 127 12
  • 在 python 中滚动 idxmax() ?

    我有一个 python DataFrame 其中包含一些财务数据 我正在尝试为其创建一些技术指标 我试图弄清楚如何使用移动窗口函数来加速该过程 而不是逐个元素地进行 对于每个索引 我想返回过去 30 天的最大索引 我已经实现了一个逐个元素的