熊猫通过重置获取累积总和

2024-02-26

Problem

我试图保留连续时间戳(分钟频率)的运行总数。我目前有一种方法可以获取累积和并在两列不匹配的情况下重置它,但它是通过 for 循环完成的。我想知道是否有一种方法可以在没有循环的情况下做到这一点。

Code

cb_arbitrage['shift'] = cb_arbitrage.index.shift(1, freq='T')

Returns:

                        cccccccc     bbbbbbbb  cb_spread         shift
timestamp                                                                   
2017-07-07 18:23:00  2535.002000  2524.678462  10.323538 2017-07-07 18:24:00
2017-07-07 18:24:00  2535.007826  2523.297619  11.710207 2017-07-07 18:25:00
2017-07-07 18:25:00  2535.004167  2524.391000  10.613167 2017-07-07 18:26:00
2017-07-07 18:26:00  2534.300000  2521.838667  12.461333 2017-07-07 18:27:00
2017-07-07 18:27:00  2530.231429  2520.195625  10.035804 2017-07-07 18:28:00
2017-07-07 18:28:00  2529.444667  2518.782143  10.662524 2017-07-07 18:29:00
2017-07-07 18:29:00  2528.988000  2518.802963  10.185037 2017-07-07 18:30:00
2017-07-07 18:59:00  2514.403367  2526.473333  12.069966 2017-07-07 19:00:00
2017-07-07 19:01:00  2516.410000  2528.980000  12.570000 2017-07-07 19:02:00

然后我执行以下操作:

cb_arbitrage['shift'] = cb_arbitrage['shift'].shift(1)
cb_arbitrage['shift'][0] = cb_arbitrage.index[0]
cb_arbitrage['count'] = 0

返回:

                        cccccccc     bbbbbbbb  cb_spread               shift  count
timestamp                                                                          
2017-07-07 18:23:00  2535.002000  2524.678462  10.323538 2017-07-07 18:23:00      0
2017-07-07 18:24:00  2535.007826  2523.297619  11.710207 2017-07-07 18:24:00      0
2017-07-07 18:25:00  2535.004167  2524.391000  10.613167 2017-07-07 18:25:00      0
2017-07-07 18:26:00  2534.300000  2521.838667  12.461333 2017-07-07 18:26:00      0
2017-07-07 18:27:00  2530.231429  2520.195625  10.035804 2017-07-07 18:27:00      0
2017-07-07 18:28:00  2529.444667  2518.782143  10.662524 2017-07-07 18:28:00      0
2017-07-07 18:29:00  2528.988000  2518.802963  10.185037 2017-07-07 18:29:00      0
2017-07-07 18:59:00  2514.403367  2526.473333  12.069966 2017-07-07 18:30:00      0
2017-07-07 19:01:00  2516.410000  2528.980000  12.570000 2017-07-07 19:00:00      0

然后,循环计算累积和,并重置:

count = 0
for i, row in cb_arbitrage.iterrows():

    if i == cb_arbitrage.loc[i]['shift']:
        count += 1
        cb_arbitrage.set_value(i, 'count', count)
    else:
        count = 1
        cb_arbitrage.set_value(i, 'count', count)

这给了我预期的结果:

                        cccccccc     bbbbbbbb  cb_spread               shift  count
timestamp                                                                          
2017-07-07 18:23:00  2535.002000  2524.678462  10.323538 2017-07-07 18:23:00      1
2017-07-07 18:24:00  2535.007826  2523.297619  11.710207 2017-07-07 18:24:00      2
2017-07-07 18:25:00  2535.004167  2524.391000  10.613167 2017-07-07 18:25:00      3
2017-07-07 18:26:00  2534.300000  2521.838667  12.461333 2017-07-07 18:26:00      4
2017-07-07 18:27:00  2530.231429  2520.195625  10.035804 2017-07-07 18:27:00      5
2017-07-07 18:28:00  2529.444667  2518.782143  10.662524 2017-07-07 18:28:00      6
2017-07-07 18:29:00  2528.988000  2518.802963  10.185037 2017-07-07 18:29:00      7
2017-07-07 18:59:00  2514.403367  2526.473333  12.069966 2017-07-07 18:30:00      1
2017-07-07 19:01:00  2516.410000  2528.980000  12.570000 2017-07-07 19:00:00      1
2017-07-07 21:55:00  2499.904560  2510.814000  10.909440 2017-07-07 19:02:00      1
2017-07-07 21:56:00  2500.134615  2510.812857  10.678242 2017-07-07 21:56:00      2

您可以使用diff查找当前行和上一行之间的差异的方法。然后您可以检查该差异是否等于一分钟。从这里开始,有很多技巧可以重置数据中的条纹。

我们首先获取布尔系列的累积和,这使我们接近我们想要的。为了重置序列,我们将此累积和序列乘以原始布尔值,因为 False 的计算结果为 0。

s = cb_arbitrage.timestamp.diff() == pd.Timedelta('1 minute')
s1 = s.cumsum()
s.mul(s1).diff().where(lambda x: x < 0).ffill().add(s1, fill_value=0) + 1

0     1.0
1     2.0
2     3.0
3     4.0
4     5.0
5     6.0
6     7.0
7     1.0
8     1.0
9     1.0
10    2.0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

熊猫通过重置获取累积总和 的相关文章

  • virtualenvwrapper 函数在 shell 脚本中不可用

    所以 我再一次制作了一个很棒的 python 程序 它让我的生活变得更加轻松 并节省了大量时间 当然 这涉及到一个 virtualenv 用mkvirtualenvvirtualenvwrapper 的功能 该项目有一个requiremen
  • 在 Python 中延迟转置列表

    所以 我有一个延迟生成的可迭代的三元组 我试图弄清楚如何将其转换为 3 个可迭代对象 分别由元组的第一个 第二个和第三个元素组成 然而 我希望这件事能懒惰地完成 所以 举例来说 我希望 1 2 3 4 5 6 7 8 9 将变成 1 4 7
  • 如何在Python + Selenium中获取元素的值

    我在我的 Python 3 6 3 代码中得到了这个 HTML 元素 作为 Selenium网页元素当然 span class ocenaCzastkowa masterTooltip style color 000000 alt 5 sp
  • Python 中“is”运算符的语义是什么?

    如何is运算符确定两个对象是否相同 它是如何工作的 我找不到它的记录 来自文档 http docs python org reference datamodel html 每个对象都有一个身份 一个类型 和一个值 对象的身份 一旦发生就永远
  • 如何在 python 中使用交叉验证执行 GridSearchCV

    我正在执行超参数调整RandomForest如下使用GridSearchCV X np array df features all features y np array df gold standard labels x train x
  • Pandas 中每列的曲线拟合 + 外推值

    我有一个包含大约 300 列的数据集 每一列都与深度相关 Pandas DataFrame 的简化版本看起来像这样 import matplotlib pyplot as plt import numpy as np import pand
  • 使用 Python-VLC 的 PyInstaller:无属性“media_player_new”错误

    我使用 Python VLC 创建视频播放器 并使用 PyInstaller 在 Windows 10 计算机上生成可执行文件 最初 它给了我错误 Import Error Failed to load dynlib dll libvlc
  • 机器学习的周期性数据(例如度角 -> 179 与 -179 相差 2)

    我使用 Python 进行核密度估计 并使用高斯混合模型对多维数据样本的可能性进行排名 每一条数据都是一个角度 我不确定如何处理机器学习的角度数据的周期性 首先 我通过添加 360 来删除所有负角 因此所有负角都变成了正角 179 变成了
  • 增强迪基-富勒测试中的 BIC 在 Python 中到底是如何工作的?

    这个问题是关于 statsmodels tsa stattools python 库 adfuller 中的增强迪基 富勒测试实现 原则上 AIC 和 BIC 应该计算一组可用模型的信息标准 并选择最好的模型 信息损失最低的模型 但它们在增
  • Python GTK3 Treeview 向上或向下移动选择

    如何在树视图中向上或向下移动所选内容 我的想法是 我可以使用向上和向下按钮将选择向上移动一行或向下移动一行 我的 Treeview 使用 ListStore 不确定这是否重要 首先 我将使用我熟悉的 C 代码 如果您在将其翻译为 Pytho
  • 为什么我无法杀死 k8s pod 中的 python 进程?

    我试图杀死一个 python 进程 ps aux grep python root 1 12 6 2 1 2234740 1332316 Ssl 20 04 19 36 usr bin python3 batch run py root 4
  • 在 4K 屏幕上使用 Matplotlib 和 TKAgg 或 Qt5Agg 后端

    我在 Ubuntu 16 04 上使用 Matplotlib 2 0 和 Python 3 6 来创建数据图 电脑显示器的分辨率为 4k 分辨率为 3840x2160 绘图数字看起来非常小 字体也很小 我已经尝试过TKAgg and Qt5
  • 如何在类型提示中定义元组或列表的大小

    有没有办法在参数的类型提示中定义元组或列表的大小 目前我正在使用这样的东西 from typing import List Optional Tuple def function name self list1 List Class1 if
  • 如何将Python包从旧版本安装到新版本?

    我正在使用 python 3 7 最近在 Linux 中安装了 python 3 8 是否有任何 bash 命令或脚本可以获取 3 7 的所有软件包列表并在 3 8 版本中一一安装 我想避免每个包裹都手工完成 注意 我将它们安装在我的系统中
  • 如何创建简单的梯度下降算法

    我正在研究简单的机器学习算法 从简单的梯度下降开始 但在尝试用 python 实现它时遇到了一些麻烦 这是我试图重现的示例 我获得了有关房屋的数据 居住面积 以英尺为单位 和卧室数量 以及最终的价格 居住面积 英尺2 2104 卧室 3 价
  • 在自定义 keras 层的调用函数中传递附加参数

    我创建了一个自定义 keras 层 目的是在推理过程中手动更改前一层的激活 以下是基本层 它只是将激活值乘以一个数字 import numpy as np from keras import backend as K from keras
  • 如何仅读取 CSV 文件每行的第一列 [重复]

    这个问题在这里已经有答案了 如何在Python中读取CSV文件每行的第一列 我的数据是这样的 1 abc 2 bcd 3 cde 我只需要循环第一列的值 另外 当我在 calc 中打开 csv 文件时 每行中的数据都在同一个单元格中 这正常
  • 如何使用 keras.backend.gradients() 获取梯度值

    我试图获得 Keras 模型的输出相对于模型输入 x 而不是权重 的导数 似乎最简单的方法是使用 keras backend 中的 梯度 它返回梯度张量 https keras io backend https keras io backe
  • 如何在不同的目录中执行python脚本?

    Solved对于可能觉得这有帮助的人 请参阅下面我的答案 我有两个脚本 a py 和 b py 在我当前的目录 C Users MyName Desktop MAIN 中 我运行 gt python a py 第一个脚本 a py 在我当前
  • 在Python中使用os.makedirs创建目录时出现权限问题

    我只是想处理上传的文件并将其写入工作目录中 该目录的名称是系统时间戳 问题是我想以完全权限创建该目录 777 但我不能 使用以下代码创建的目录755权限 def handle uploaded file upfile cTimeStamp

随机推荐

  • 在 travis-ci 上使用秘密 api 密钥

    我想用特拉维斯 ci http travis ci org 对于我的一个projects https github com adelevie parse ruby client 该项目是一个 API 包装器 因此许多测试都依赖于 API 密
  • Fortran 多态性、函数和分配

    我是 Fortran OOP 的初学者 我正在尝试编写一个程序 其中包含处理多态变量作为参数的过程 尽管我的原始代码要复杂得多 许多过程 几个派生类型等 但我可以隔离我的问题的一个简单示例 例如 我有一个复制多态变量并稍微修改此副本的过程
  • 如何配置 Spring MVC 来防止“基于路径的漏洞”

    我有一个 Spring MVC 5 0 8 RELEASE 应用程序 最近的安全扫描表明它具有 基于路径的漏洞 这是控制器 RequestMapping value faq method RequestMethod GET public S
  • 编写一个可调用 C 代码的 void 过程?

    编写一个可从 C 调用的汇编过程 称为increment 该过程应采用指向 32 位整数的指针作为参数 并应递增该参数指向的整数 该函数的 C 原型如下 void increment int p 仅提供从过程标签到 ret 指令的汇编代码
  • Xcode 中的 Swift 编译时间极长

    我有三个 iOS 项目 第一个 35k Swift LOC Swift 2 1 或 2 0 使用 Xcode 7 2 3 编译 第二个 15k Swift LOC Swift 2 3 使用 Xcode 8 2 1 编译 第三个 15k Sw
  • Bootstrap 4 向右浮动无法与导航栏一起使用[重复]

    这个问题在这里已经有答案了 这是代码 我需要将导航栏 没有徽标 移动到右侧 所以我添加了 float right 来喜欢 div class collapse navbar collapse float right 但它没有奏效 完整代码
  • 在 ASP.NET 单元测试中模拟 HttpContext.server.MapPath

    我在 ASP Net Web 应用程序中进行单元测试 现在我可以访问模型文件中的构造函数来测试其中是否有用于上传 XML 文件的 Server MapPath 代码 当尝试测试此代码时 我收到错误 因为 HttpContext 为 null
  • 函数使用 NRV 优化应遵循哪些规则

    我应该遵循哪些规则或技巧才能使函数能够在函数中使用 NRV 命名返回值 优化 我从不同的地方吸收了这些提示 但不知道我的理解是否正确 要返回的对象在函数内部不应该有任何名称 那为什么叫NAMED返回值优化 return 语句应该将对象用括号
  • 在 JDBC 应用程序中向前和向后移动 ResultSet 游标

    我正在开发一个库存系统软件 该软件使用 JDBC ODBC 连接连接到 Ms Sql 服务器 我想将结果集光标移动到下一行并向后移动 连接正常 程序可以从数据库中检索字段 因此没有问题 我这里的代码位于标有 下一步 的按钮上 当您单击此按钮
  • 谷歌表格中的印度短货币格式

    在谷歌表格中 我试图以印度 短 格式显示数字 并带有十万和千万后缀 如下所示 单元格值 1234 显示为1 23K 单元格值 12345 显示为12 35K 单元格值 123456 显示为1 23L L 十万 单元格值 1234567 显示
  • 在 React Router 中传递附加参数

    如何将附加参数传递给我要转换到的组件 我的routes js 如下 我声明了两条路径 一条用于authorList 另一条用于特定作者的详细信息 var routes
  • 如何在 C 中将数组的字符串元素连接成单个字符串?

    我有一个字符串数组 我想创建一个新字符串 它是所有数组元素的串联 任何帮助表示赞赏 谢谢 include
  • org.testng.TestNGException:在:[DynamicGraph 中找不到空闲节点

    我在 testng 中使用同一类的两种方法 但它不允许我这样 它给出了异常 org testng TestNGException 在 DynamicGraph 中找不到空闲节点 我的 testng 文件是
  • Zend Framework:在控制器名称/URL 中使用破折号

    我有一个网址 我希望看起来像http 服务器 我的 操作名称 http server my action name 显然 我不能在 ControllerName 函数中使用 并且下划线不起作用 这可能吗 默认情况下 http server
  • Apache 服务器忽略 .htaccess

    我试图让一个网站在我的测试环境中运行 但不知何故它无法运行 我可以加载正常的索引页面 但是当我想访问 page test 时 它会抛出一个错误 指出该页面不存在 我的日志说 File does not exist home page url
  • 使用 @mock.patch.object 模拟方法时返回值未按预期设置

    我的测试应该会成功 因为我用 mocker return value 给出了返回值 这应该为客户提供一个值 以便函数调用最终出现在 else 语句 客户找到 中 但事实并非如此 据我所知 返回值没有被正确模拟 但为什么呢 Mock from
  • Windows .bat/.cmd 函数库在自己的文件中?

    有构建函数的好方法 http www dostips com DtTutoFunctions php在 DOS bat cmd 脚本中 要模块化某些安装脚本 最好将带有函数库的文件包含到 bat cmd 脚本中 我尝试的是 主脚本 bat
  • BitArray - 移位

    我有一个 System Collections BitArray 数组 3000 个项目 我想将所有位向左移动 1 但是该集合似乎不支持该操作 即 bitArray Thanks 这个简单的代码片段展示了手动执行此操作的方法 的价值bitA
  • 返回空指针异常 - Java Selenium Webdriver

    使用 Java 在 Selenium WebDriver 中运行测试时出现空指针异常 由于某种原因 测试返回 null 即使所有内容都被正确声明 我认为 我在这里错过了什么 做错了什么 给定这段代码 public class HomePag
  • 熊猫通过重置获取累积总和

    Problem 我试图保留连续时间戳 分钟频率 的运行总数 我目前有一种方法可以获取累积和并在两列不匹配的情况下重置它 但它是通过 for 循环完成的 我想知道是否有一种方法可以在没有循环的情况下做到这一点 Code cb arbitrag