按给定的时间增量查找数据帧列中的时间戳

2024-04-26

我有一个包含时间戳列的数据框。我的目标是找到每行的第一个时间戳,该时间戳大于该行的时间戳给定的偏移量(例如 0.01 秒)。我尝试使用这里给出的答案 https://stackoverflow.com/questions/32237862/find-the-closest-date-to-a-given-date,以修改后的方式,例如:

def getTime(col, base, offset=0.01):
    later = filter(lambda d: d > base+dt.timedelta(seconds=offset), col)
    return min(later)

testTbt['testTime']=testTbt['exchTstamp'].apply(lambda time: getTime(testTbt[testTbt['exchTstamp']>time]['exchTstamp'].iloc[0:100].tolist(), time, 0.01))

但得到了错误:ValueError: min() arg is an empty sequence.

时间戳为微秒级别,包含重复值并且按递增顺序排列。

这是数据框的初始行:

    exchTstamp                  seqNum prev10mSecAvg prev1SecAvg    imbRegime
0   2019-08-14  09:15:00.022991 199    0.000000      0.000000       0
1   2019-08-14  09:15:00.022995 200   -0.166667     -0.166667       3
2   2019-08-14  09:15:00.022999 201   -0.277778     -0.277778       2
3   2019-08-14  09:15:00.023003 202   -0.333333     -0.333333       2
4   2019-08-14  09:15:00.023007 203   -0.386667     -0.386667       2

可以下载 csv 数据here https://drive.google.com/file/d/104ngrhwXqgQa1fjMWYMiH5g2Vt8SzO9G/view?usp=sharing.

预期输出是数据帧中添加的列,其中包含后续时间戳中的第一个时间戳,该时间戳比当前行的时间戳至少大 0.01 秒。例如:- 对于给定的数据集,第一行的新列(有时间09:15:00.022995)应该有价值09:15:00.033136。对于后续的每一行都相同。

一点指导会有很大帮助。


我认为最快和最简单的方法是使用searchsorted https://docs.scipy.org/doc/numpy/reference/generated/numpy.searchsorted.html。如果没有元素大于df.exchTstamp+delta, then searchsorted将返回数组的长度,即超出数据帧索引范围的索引。因此我们首先需要插入一个nan / NaT这种情况下的哨兵行,我们随后将其删除:

import numpy as np, pandas as pd, datetime as dt

df = pd.read_csv('stack.csv', index_col=0, parse_dates=[1])
delta = dt.timedelta(seconds=0.01)

res = np.searchsorted(df.exchTstamp, df.exchTstamp+delta)

# add sentinel
df.append(pd.Series(), ignore_index=True)

df["testTime"] = df.loc[res,'exchTstamp'].values

# remove sentinel
df = df.drop(df.index[-1])

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

按给定的时间增量查找数据帧列中的时间戳 的相关文章

随机推荐

  • 颤动导航到新屏幕不起作用

    我正在构建一个登录屏幕 将数据传递到主屏幕 当我单击登录按钮时 什么也没有发生 没有错误 但也没有发送到新屏幕 这是按钮代码 Widget submitButton return Container margin EdgeInsets al
  • 如何在 Dockerfile 中添加除隐藏目录(如 .git)之外的所有文件/目录

    我们经常做的一件事就是将所有源代码打包在Dockerfile当我们构建 Docker 镜像时 ADD app 我们怎样才能避免包括 git目录以简单的方式 我尝试使用 Unix 方式来处理这个问题ADD app 完整样本 docker bo
  • Java中引用传递的疑惑

    所以我在读这个帖子 https stackoverflow com questions 40480 is java pass by reference和回复编号 2 在该示例中 调用该方法后 地址 42 name 处的 Dog 值是否更改为
  • Spring Hibernate:重新加载实体映射

    在 Web 应用程序中 我们使用 Spring 3 2 和 Hibernate 4 1 1 并实现类似插件的架构 可以在运行时添加和删除插件 对于每个模块 我们定义了一个单独的类加载器 并在 spring 上创建单独的子应用程序上下文 完整
  • 如何使用python中的turtle模块绘制颜色环

    我有下面的代码 它应该在一个圆圈周围绘制一圈颜色 但如果在移动到下一个之前打印和更改 8 次 则只有一种颜色 import turtle def drawCircle colorList radius for color in colorL
  • Win32 DrawText 行高

    我正在调用 Win32DrawText函数将一些文本输出到设备上下文中 文本很长 可以很好地换行到第二行 问题是我需要稍微减少行之间的间距 我想减少行高 关于如何做到这一点有什么想法吗 我只想打电话DrawText两次 每行一次 但随后我必
  • 检查 enum 是否已过时

    我如何检查是否enum如果标记为过时 public enum MyEnums MyEnum1 Obsolete How can you know that I m obsolete MyEnum2 MyEnum3 现在在运行时 我需要知道哪
  • 递归相对于 git rm -r [文件名] 意味着什么

    我正在学习一些 git 教程 但不明白运行之间的区别 git rm path to file and git rm r path to file 递归到底是什么意思 提前致谢 从 git rm 手册页 主目录名称 例如dir去除dir fi
  • 对“lzma_code”的未定义引用

    我尝试打包我的应用程序并静态链接所有库 但我收到此错误 Makefile 如下所示 CC gcc INCPATH I home johnny Application FileBasedReG include RealityGrid LIBS
  • 可以在 UUID 列上创建索引吗?

    是否可以在 Cassandra 中的 UUID TIMEUUID 列上创建索引 我正在测试一个模型设计 该设计在 UUID 列上有一个索引 但对该列的查询始终返回找到的 0 行 我有一个这样的表 create table some data
  • 在VS2008中使用wpf透明png

    我想在 WPF VS2008 中制作一个半透明的 UI 因此我将表单设为透明 并想在其顶部显示一个半透明 png 其中包括 孔 如何显示半透明png 半透明 意味着它有可以看到的孔 另外 我如何在 C 中完成此操作 而不使用 WPF Tha
  • 未找到“GuzzleHttp\Client”类

    我同时使用Guzzle http guzzle readthedocs org en latest 并首次推出 Codeigniter 3 0 我也承认我是第一次使用 php 命名空间 我正在尝试根据文档中提供的示例使用 Guzzle 发出
  • GenJar 更换或更新?

    GenJar 是一个专门的 Ant 任务 它基于类依赖关系而不是简单地基于目录的内容构建 jar 文件 http genjar sourceforge net http genjar sourceforge net 确实有用 但是项目好像不
  • Django 无法导入设置

    我正在尝试在我的项目中使用 django admin dbshel l 任何其他 cmd 都会给出相同的结果 我得到了 You must either define the environment variable DJANGO SETTI
  • Powershell脚本运行缓慢

    我正在编写一个脚本来检查大约 15 个远程服务器上的版本 但该脚本的执行时间比我预期的要长得多 listServers compName1 compName2 compName3 compName15 Out File C temp jav
  • 如何轻松区分/比较 TFS 中的 2 个搁置集?

    有没有一种方法可以比较 TFS 中的 2 个搁置 而不必在单独的工作区中取消搁置并比较文件 我一直在寻找相同的东西 即比较两个书架的内容 而不需要取消其中之一的书架 最终为该功能编写一个 Visual Studio 扩展 该扩展适用于 Vi
  • 使用 WinForms 绘制宽线时出现 OutOfMemoryException

    这个太疯狂了 我只画了几千条线OnPaint处理程序 没有问题 当pen Width lt 1 或者当屏幕上没有很多行时 好的 我画了一张比例尺地图 线宽随地图缩放 当我缩放一些地图时 我得到OutOfMemoryException WHY
  • 在第三方网站的 iframe 中访问时,未为子域设置 Django csrf cookie

    到目前为止 我的应用程序运行良好 所有操作都是通过访问其公共 IP 来完成的 现在 它被添加到主站点 名称为 app mainsite com 这样就可以访问了 我可以登录等等一切 但我的应用程序有点特别 它的某个功能允许用户在任何第三方网
  • Android中如何获取经度和纬度

    我想找到我当前位置的经度和纬度 但我一直得不到NULL double lat loc getLatitude Cause the result is null so can t know longitude and latitude dou
  • 按给定的时间增量查找数据帧列中的时间戳

    我有一个包含时间戳列的数据框 我的目标是找到每行的第一个时间戳 该时间戳大于该行的时间戳给定的偏移量 例如 0 01 秒 我尝试使用这里给出的答案 https stackoverflow com questions 32237862 fin