如何计算 pandas 数据框中满足布尔条件的时间间隔数?

2024-03-02

我有一只熊猫df时间序列在column1,以及布尔条件column2。这描述了满足特定条件的连续时间间隔。请注意,时间间隔的长度不等。

Timestamp   Boolean_condition
1           1
2           1
3           0
4           1
5           1
6           1
7           0
8           0
9           1
10          0

如何统计整个序列内满足这个条件的时间间隔总数?

所需的输出应如下所示:

Timestamp   Boolean_condition   Event_number
1           1                   1
2           1                   1
3           0                   NaN
4           1                   2
5           1                   2
6           1                   2
7           0                   NaN
8           0                   NaN
9           1                   3
10          0                   NaN

您可以创建Series with cumsum http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.cumsum.html of two masks然后创建NaN按功能Series.mask http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.mask.html:

mask0 = df.Boolean_condition.eq(0)
mask2 = df.Boolean_condition.ne(df.Boolean_condition.shift(1))
print ((mask2 & mask0).cumsum().add(1))
0    1
1    1
2    2
3    2
4    2
5    2
6    3
7    3
8    3
9    4
Name: Boolean_condition, dtype: int32

df['Event_number'] = (mask2 & mask0).cumsum().add(1).mask(mask0)
print (df)
   Timestamp  Boolean_condition  Event_number
0          1                  1           1.0
1          2                  1           1.0
2          3                  0           NaN
3          4                  1           2.0
4          5                  1           2.0
5          6                  1           2.0
6          7                  0           NaN
7          8                  0           NaN
8          9                  1           3.0
9         10                  0           NaN

Timings:

#[100000 rows x 2 columns
df = pd.concat([df]*10000).reset_index(drop=True)
df1 = df.copy()
df2 = df.copy()

def nick(df):
    isone = df.Boolean_condition[df.Boolean_condition.eq(1)]
    idx = isone.index
    grp = (isone != idx.to_series().diff().eq(1)).cumsum()
    df.loc[idx, 'Event_number'] = pd.Categorical(grp).codes + 1
    return df

def jez(df):
    mask0 = df.Boolean_condition.eq(0)
    mask2 = df.Boolean_condition.ne(df.Boolean_condition.shift(1))
    df['Event_number'] = (mask2 & mask0).cumsum().add(1).mask(mask0)
    return (df)

def jez1(df):
    mask0 = ~df.Boolean_condition
    mask2 = df.Boolean_condition.ne(df.Boolean_condition.shift(1))
    df['Event_number'] = (mask2 & mask0).cumsum().add(1).mask(mask0)
    return (df)

In [68]: %timeit (jez1(df))
100 loops, best of 3: 6.45 ms per loop

In [69]: %timeit (nick(df1))
100 loops, best of 3: 12 ms per loop

In [70]: %timeit (jez(df2))
100 loops, best of 3: 5.34 ms per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算 pandas 数据框中满足布尔条件的时间间隔数? 的相关文章

  • Python 转换矩阵

    我有一个如下所示的列表 2 1 3 1 2 3 1 2 2 2 我想要的是一个转换矩阵 它向我显示如下序列 1 后跟 1 的频率是多少 1 后面跟着 2 的频率是多少 1 后跟 3 的频率是多少 2 后跟 1 的频率是多少 2 后跟 2 的
  • Flask 中“缺少 CSRF 令牌”,但它在模板中呈现

    问题 当我尝试登录 使用 Flask login 时 我得到Bad Request The CSRF session token is missing但令牌正在呈现 在模板中 secret key 已设置 并且我在本地运行localhost
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • 将 Python Pandas DataFrame 写入 Word 文档

    我正在努力创建一个使用 Pandas DataFrames 的 Python 生成的报告 目前我正在使用DataFrame to string 方法 但是 这会作为字符串写入文件 有没有办法让我实现这一目标 同时将其保留为表格 以便我可以使
  • 使用 NumPy 编写一个函数来计算具有特定公差的积分

    我想编写一个自定义函数来以特定容差对表达式 python 或 lambda 函数 进行数字积分 我知道与scipy integrate quad人们可以简单地改变epsabs但我想使用 numpy 自己编写该函数 From 这篇博文 htt
  • 设置高亮大括号的 vim 颜色主题

    如何更改突出显示大括号的 vim 配色方案 我希望实际编辑 vim 主题文件以使更改永久生效 问候 克雷格 匹配括号的自动高亮颜色称为MatchParen 您可以通过执行以下操作来更改 vimrc 中的颜色 highlight MatchP
  • 高级描述熊猫

    有没有像 pandas 那样更高级的功能 通常我会继续这样 r pd DataFrame np random randn 1000 columns A r describe 我会得到一份很好的总结 就像这样 A count 1000 000
  • 数据框中 .map(str) 和 .astype(str) 有什么区别

    我有一个数据框 其列名为 col1 和 col2 的整数类型条目 我想将 col1 和 col2 的条目以及其间的 点 连接起来 我搜索并发现添加两个列条目 df col df col1 map str df col2 map str 并添
  • 通过 Python 循环浏览网络上的目录并显示其内容(文件和其他目录)

    同样的道理在Python中处理从源目录到目标目录的一组文件 https stackoverflow com questions 2593399 process a set of files from a source directory t
  • 更改 Matplotlib 投影轴的背景颜色

    我正在尝试使用 Cartopy 创建一个图形 该图形需要在未投影的轴上绘制投影轴 这是一个尽可能简单的代码版本 它将轴上的内容替换为背景颜色 import matplotlib pyplot as plt import cartopy cr
  • Python-验证我的文档 xls 中是否存在工作表

    我正在尝试在空闲时间设计一个小程序 加载 xls 文件 然后在要扫描的文档中选择一张纸 步骤1 用户导入 xls文件 导入程序后检查文件是否存在 我能做到的 第 2 步 我要求用户提供要分析的文档表 xls 的名称 这就是它停止的地方 该程
  • python Recipe:列出最接近等于值的项[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 考虑像这样的列表 0 3 7 10 12 15 19 21 我想获得最接近任何值的最近的最小数字 所以如果我通过4 我会得到3 如果我
  • 是否可以在Python中将日+月(不是年)与当前日+月进行比较?

    我正在获取 5 月 10 日 格式的数据 我试图弄清楚它是今年还是明年 该日期仅一年 因此 5 月 10 日表示 2015 年 5 月 10 日 而 5 月 20 日表示 2014 年 5 月 20 日 为此 我想将字符串转换为日期格式并进
  • 导入 pandas 显示 ImportError: 无法导入名称哈希表

    我已经在 python 3 3 上安装了 pandas 代码如下 import csv import pandas from pandas import DataFrame csvdata pandas read csv datafile
  • 无需访问 Internet 即可部署 Django 的简单方法?

    我拥有的是使用 Django 开发的 Intranet 站点的开发版本以及放置在 virtualenv 中的一些外部库 它运行良好 我可以在任何具有互联网连接的计算机上使用相同的参数 使用 pip 轻松设置 virtualenv 但是 不幸
  • 两种 ODE 求解器之间的差异

    我想知道 两者之间有什么区别ODEINT and solve ivp用于求解微分方程 它们之间有什么优点和缺点 f1 solve ivp f 0 1 y0 y0 is the initial point f2 odeint f y0 0 1
  • 使用 MPI 的 Allreduce 对 Python 对象求和

    我正在使用使用 Python 中的字典和计数器构建的稀疏张量数组操作 我想让并行使用这个数组操作成为可能 最重要的是 我最终在每个节点上都有计数器 我想使用 MPI Allreduce 或另一个不错的解决方案 将其添加在一起 例如 使用计数
  • 使用 pandas 单元格中列表的长度选择行[重复]

    这个问题在这里已经有答案了 我有一张表 df a b c 1 x y x 2 x z c d 3 x t e f g 只是想知道如何使用 c 列的长度选择行 such as df loc len df c gt 1 我知道这是不对的 正确的
  • MoviePY 无法在 Windows 上检测 ImageMagick 二进制文件

    我刚买了一台新笔记本电脑 想要设置MoviePY在那新的Windows 64x Python3 7 0 机器 我对所有内容都进行了三次检查 但是当涉及到我的代码的文本部分时 它向我抛出了这个错误 OSError MoviePy Error
  • 如何同时接受int和float类型的输入?

    我正在制作一个货币转换器 如何让 python 同时接受整数和浮点数 我就是这样做的 def aud brl amount From to ER 0 42108 if amount int if From strip aud and to

随机推荐

  • 如何在wpf中刷新窗口?

    我正在开发一个小项目 它是一个带有 4 个 WPF 选项卡的窗口 第一个选项卡是我完成大部分工作的地方 但有时我需要移回其他选项卡 其中一个选项卡有一个 DataGrid 它绑定到一个受我所在的主选项卡影响的列表 当我在第一个选项卡上更新某
  • android.support.v7.widget.SwitchCompat 周围的选择框

    我试图在我的应用程序中模仿新的材料设计开关 并且 switchcompat 工作得很好 唯一的问题是触摸开关周围会出现一个灰色的选择框 这确实破坏了干净的外观 这是我可以删除的东西吗 Use
  • 如何使用 Xamarin Forms 查看 PDF 文件

    有什么方法可以使用 xamarin 表单来查看 PDF 文件而不使用自定义渲染器 Android public void OpenPdf string filePath Android Net Uri uri Android Net Uri
  • 如何阻止机器人和垃圾邮件提交评论?

    现在 我正在使用验证码图像 我创建了文本字段并使用 JavaScript 隐藏它 我希望它的值在服务器端为空 因为机器人应该填写表单上的所有字段 如果值不为空 则不会处理注释 我还使用时间戳来检查提交评论花了多长时间 我想如果评论是在 15
  • Grails 内联插件:无法升级通过 BuildConfig.groovy 配置的插件

    我们的应用程序分为一个主应用程序和一些插件 我们通过 BuildConfig groovy 文件使用内联插件 当需要对整个生产进行 WAR 时 我收到以下消息 您无法升级以下插件 通过 BuildConfig groovy 配置 删除配置以
  • 国际化 Web 应用程序的最佳实践?

    国际化网络应用程序似乎总是一件苦差事 无论您对可插入语言做了多少计划 总会存在编码问题 不适合您的模板的时髦措辞以及其他问题 我认为 获得 SO 社区的意见是很有用的 程序员在决定将其 Web 应用程序国际化时应该注意这些事项 国际化很困难
  • 如何从地址栏搜索网站

    当我写 stackoverflow com 或 bing com 然后在 google chrome URL 中输入空格时 它会添加 搜索 stackoverflow 或 搜索 bing 那么我们需要在网络应用程序中实现什么才能让 goog
  • 以 vsdoc 格式记录 javascript 的 T 类型数组,我发现错误了吗?

    下列的这些 vsdoc 文档指南 http weblogs asp net bleroy archive 2007 04 23 the format for javascript doc comments aspx 我无法让智能感知对给定类
  • XmlSchema.Read 给出 COMException“灾难性失败”

    我有一个实用程序类 其中包含一些与 XML 模式相关的方法 在没有任何代码更改或对环境进行任何已知更改的情况下 它突然开始出现系统性故障 失败的方法 public static XmlSchema GetSchema string xsdF
  • Android 交叉编译时链接器错误

    我想为 Android 交叉编译我的项目 我创建了 cargo config 如下 target armv7 linux androideabi ar optHDD AndroidNDK toolchains llvm prebuilt l
  • 将工作表添加到 Excel 工作簿

    我正在尝试创建一个WorkbookExcel 中有多个工作表 但我不知道如何创建多个工作表 我可以很好地创建一个 但是当我尝试创建第二个来写入时 我收到错误 Dim app As Application New Application Di
  • 使用 AngularJS 和 jQuery 修改 DOM (slideDown/slideUp)

    我正在尝试使用 AngularJS 实现 SlideDown slideUp 动画 我不能使用 CSS3 的转换 不幸的是 因为height被设定为auto 而且我不想使用the max height解决方法 https stackover
  • 我的 C# 应用程序被防病毒应用程序标记。我如何找出原因? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个 C 应用程序被多个防病毒应
  • 减去数据帧 pandas 时的 NaN

    我有两个数据框 只有一些重叠的索引和列 old pd DataFrame index A B C columns k l m data abs np floor np random rand 3 3 10 new pd DataFrame
  • 在PIL中绘制半透​​明多边形

    如何使用绘制半透明多边形Python 图像库 https en wikipedia org wiki Python Imaging Library 您可以在单独的 RGBA 图像上绘制多边形 然后使用Image paste 图像 框 蒙版
  • pandas.DataFrame 的矢量化集成

    我有一个DataFrame力 位移数据 位移数组已设置为DataFrame索引 列是我针对不同测试的各种力曲线 如何计算完成的功 即 曲线下面积 我在看numpy trapz http docs scipy org doc numpy 1
  • 使用 unixOdbc 的 SELECT 之一失败 - SQLSTATE[24000]:无效的游标状态

    我正在运行安装了 FreeTDS 和 ODBC 软件包 php5 odbc 的 Ubuntu 13 10 我使用 tds 版本 8 0 但也尝试过 tds 版本 7 2 我正在使用 PDO 这是我的 DSN dsn sprintf odbc
  • 可以在 Node.js 模块中异步初始化导出吗?

    由于 MongoDB 数据库访问和初始化在 Node js 上是异步的 因此我想为每个集合定义一个模块 在数据库初始化后导出包装的数据库调用 这样的 Cars model js 模块如下所示 var db require mongodb d
  • NSArray 属性:复制还是保留?

    根据这个 NSString 属性 复制还是保留 https stackoverflow com questions 387959 nsstring property copy or retain 对于 NSString NSMutableS
  • 如何计算 pandas 数据框中满足布尔条件的时间间隔数?

    我有一只熊猫df时间序列在column1 以及布尔条件column2 这描述了满足特定条件的连续时间间隔 请注意 时间间隔的长度不等 Timestamp Boolean condition 1 1 2 1 3 0 4 1 5 1 6 1 7