You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取Pandas DataFrame中布尔值标记的连续时间段起止时间

实现方法

核心思路

要区分连续的True布尔段,核心是给每一段连续的相同布尔值分配唯一的分组ID,过滤掉False段后,按组聚合取时间的最小、最大值即可得到每段的起止时间戳。

完整代码

假设你的布尔序列变量名为at_series,索引为datetime类型,索引名称为t:

import pandas as pd

# 生成连续段分组ID:当前值与前一个值不同时,分组ID累加1
group_id = (at_series != at_series.shift()).cumsum()

# 过滤True段,按分组聚合得到起止时间
result = at_series[at_series].reset_index()\
    .groupby(group_id[at_series])['t']\
    .agg(start_time='min', end_time='max')\
    .reset_index(drop=True)

结果示例

运行后得到的result结构如下,和预期的两段区间完全匹配:

start_time            end_time
0 2021-06-19 21:29:38 2021-06-19 21:29:58
1 2021-06-19 21:30:58 2021-06-19 21:32:48

内容的提问来源于stack exchange,提问作者Määäx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:45:07