pandas 按 n 秒分组并应用任意滚动函数

2023-11-24

我有一些加速度计读数的 csv 数据,格式如下(不完全是这样,真实数据具有更高的采样率):



2013-09-28 17:36:50.322120,  0.152695, -0.545074, -0.852997
2013-09-28 17:36:50.622988,  0.141800, -0.554947, -0.867935
2013-09-28 17:36:51.923802,  0.132431, -0.547089, -0.879333
2013-09-28 17:36:52.124641,  0.124329, -0.530243, -0.887741
2013-09-28 17:36:52.425341,  0.122269, -0.519669, -0.900269
2013-09-28 17:36:52.926202,  0.122879, -0.502151, -0.902023
....
....
....
....
2013-09-28 17:49:14.440343,  0.005447, -0.623016, -0.773529
2013-09-28 17:49:14.557806,  0.009048, -0.623093, -0.790909
2013-09-28 17:49:14.758442,  0.007217, -0.617386, -0.815796
  

我使用 pandas 加载它们

import pandas as pd
accDF=pd.read_csv(accFileName,header=0, sep=',') 
accDF.columns=['time','x','y','z']
accDF=accDF.set_index(['time'])

加速度计数据不是均匀采样的,我想每 10 或 20 或 30 秒对数据进行分组,并对数据组应用自定义函数。

如果数据是均匀采样的,那么应用滚动函数就会很容易。 但是,既然不是,我想使用时间戳间隔来应用 groupby 。 以一秒的间隔执行此操作很容易:

accDF_win=accDF.groupby(accDF.index.second).apply... etc

但是,我无法弄清楚如何按任意秒数进行分组,然后对其应用函数。

使用 TimeGrouper,我可以执行以下操作:

accDF_win=accDF.groupby(pd.TimeGrouper(freq='3Min'))

任意分钟数,但似乎 TimeGrouper 没有“第二”分辨率。

在此先感谢您的帮助


首先,您必须将 datetime-column 转换为 python-datetime 对象(如果您没有这样做)。

>>> import pandas as pd
>>> from dateutil import parser
>>> df=pd.read_csv("test.csv",header=None,date_parser=True)
#convert to datetime index, f.e. with dateutil
>>> df=df.set_index(df[0].map(parser.parse)

然后使用pd.TimeGrouper像这样:

>>> df[3].groupby(pd.TimeGrouper('10S')).head()
2013-09-28 17:36:40  2013-09-28 17:36:40.322120   -0.852997
                     2013-09-28 17:36:41.622988   -0.867935
                     2013-09-28 17:36:42.923802   -0.879333
                     2013-09-28 17:36:43.124641   -0.887741
                     2013-09-28 17:36:45.425341   -0.900269
2013-09-28 17:36:50  2013-09-28 17:36:52.926202   -0.902023
                     2013-09-28 17:36:53.322120   -0.852997
                     2013-09-28 17:36:53.622988   -0.867935
                     2013-09-28 17:36:54.923802   -0.879333
                     2013-09-28 17:36:54.124641   -0.887741
2013-09-28 17:49:50  2013-09-28 17:49:56.440343   -0.773529
                     2013-09-28 17:49:56.557806   -0.790909
                     2013-09-28 17:49:57.758442   -0.815796

或者看看重采样函数here。也许您可以应用自定义重采样函数而不是使用 groupby 方法。

df[3].resample("10S",how=lambda x: Whateveryouwanttodo)

如果没有任何函数,它将用 NaN 填充:

>>> df[3].resample("10S")
0
2013-09-28 17:36:40   -0.877655
2013-09-28 17:36:50   -0.884617
2013-09-28 17:37:00         NaN
2013-09-28 17:37:10         NaN
2013-09-28 17:37:20         NaN
2013-09-28 17:37:30         NaN
2013-09-28 17:37:40         NaN
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pandas 按 n 秒分组并应用任意滚动函数 的相关文章

随机推荐

  • C++ 模板:部分模板规范和友元类

    是否有可能以某种方式使部分模板规范成为友元类 IE 假设您有以下模板类 template
  • 是否允许复制/移动省略来使使用已删除函数的程序格式良好?

    考虑以下代码 include
  • GCE 区域的 IP 范围是多少?

    我需要向 CDN 提供创建 GCE 实例时可能使用的 IP 范围 按 GCE 位置划分的 IP 范围列表是否在任何地方发布 我们目前不发布哪些 IP 映射到哪些范围 我们可以并且确实根据需要移动区块以平衡容量 但是 此处列出了所有 Goog
  • Angular Material 2 浏览器自动填充垫选择不起作用

    我有一个代表地址的表单 并且我正在使用 mat select 来表示州 省 不幸的是 它不会自动填充州 省 我假设是因为它不是本地选择 这是我的标记
  • 我如何在 Scala 中表达链式赋值?

    我如何在scala中表达以下java代码 a b c 顺便说一句 我正在重新分配变量 而不是声明 Scala 中最接近的快捷语法只能在声明一个时使用var or val scala gt val c 1 c Int 1 scala gt v
  • htaccess多参数重写规则

    我知道这个问题被过度询问 但找不到任何适合我的问题的东西 我目前正在创建一个网站 我的网址如下 www foo com 或www foo com index php 它们可以采用 1 2 或 3 个不同的参数 例如 www foo com
  • 有没有办法使用 API 从 Google Drive 上的多个文件创建 zip 文件?

    如果您下载目录 Google 云端硬盘网络界面允许您下载单个 zip 文件 但是 我找不到使用 API 来做到这一点的方法 是否可以使用 API 在驱动器上创建多文件 zip 更新 Tanakie 的代码有效 这很棒 但是 我只能在我的个人
  • C# 实时 Try Catch

    我希望得到真正使用 C 进行实时编程或真正了解该语言内部原理的人的回复 我知道异常不应该用于处理正常处理 而只能用于检测错误情况 关于这个话题有很多讨论 我想知道仅仅使用 try catch 块是否会导致运行时间变慢 除非程序必须结束 否则
  • window.history.go(-1) 无法在 iOS 主屏幕应用程序中工作 [重复]

    这个问题在这里已经有答案了 因此 我试图在 iPhone HomeScreen 应用程序上将用户重定向回历史记录中的一级 但由于某种原因它只是没有触发 当前代码如下window history go 1 我也尝试过其他各种版本window
  • [:shell 编程中的意外运算符[重复]

    这个问题在这里已经有答案了 My code bin sh filename choose sh read choose choose y o choose Y echo Yes exit 0 choose n o choose N echo
  • 在 .csproj 中包含项目范围之外的内容文件

    我有一个 C 项目 MyProject csproj 位于 C Projects MyProject 我还有想要复制到该项目的输出目录中的文件 但是 这些文件位于 C MyContentFiles 位置 即它们不在项目范围内 该目录也有子目
  • C# 在运行时添加带有值的按钮[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我想在运行时向我的选项卡控件添加一个具有值的按钮 许多教程展示了创建与数据库的连接时是如何完成的 有没有什么方法可以在不连接数据库的情况下完成 在我将数据输入到两个文本框中并单击 保存
  • 无法覆盖 s3 中的内容处置标头

    我正在使用以下 php 函数为公众提供临时访问私有文件的权限 function get s3 signed url bucket resource AWS S3 KEY AWS s3 secret key expire seconds ex
  • IFrame 是否被 Google 抓取?

    我有一个 iframe 它的源是从 servlet 响应中获取的 那么 iframe 的内容会被抓取吗 Google 现在确实会抓取框架内容 只是还不确定有多少股权被传递给链接 http www serroundtable com goog
  • 如何删除 matplotlib 子图中的填充/边框

    第二个子图只是带有叠加图的第一个图像 在第二个图中 似乎有白色填充 边框 如何删除这个填充 空白 为了完整起见 这里是执行绘图的代码片段 fig ax plt subplots 1 2 fig set size inches 16 6 fo
  • 如何用Java创建Design QR码?

    我想用 Java 创建设计 QR 码 设计 QR 码可能包含图形形式的徽标 这是此类设计的代码的示例 如何创建这样的二维码 我刚刚找到了一个可以创建此类二维码的软件 有一种不同的方法可以将图片放入二维码中 代替 在冗余部分上乱涂乱画并依靠纠
  • 如何将生成器的下一个值放入列表中

    我制作了一个生成器来逐字读取文件 并且效果很好 def word reader file for line in open file for p in line split yield p reader word reader txtfil
  • JavaScript 中 == 和 === 有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 Javascript vs 我使用哪个 等于 运算符重要吗 JavaScript 什么时候比 更有意义 以下方法在将字符串与未定义值进行比较时有什么区别 var x if x undefined al
  • Interface Builder 在 MacRuby 中看不到 Outlet

    我正在尝试使用 XCode 和 Interface Builder 构建一个基本的 hello world 应用程序 但是 在 Interface Builder 中我看不到连接的插座 我转到对象检查器窗格的连接选项卡 它显示 新引用插座
  • pandas 按 n 秒分组并应用任意滚动函数

    我有一些加速度计读数的 csv 数据 格式如下 不完全是这样 真实数据具有更高的采样率 2013 09 28 17 36 50 322120 0 152695 0 545074 0 852997 2013 09 28 17 36 50 62