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

如何计算DataFrame中索引为秒的布尔列的True值持续总时长

计算DataFrame中布尔列连续True的总持续时长

嘿,我来帮你搞定这个需求!咱们的目标是把所有连续True的时间段时长加起来,用索引的秒数来计算对吧?下面我给你两种实现方法,都能得到你想要的4.5秒结果。

方法一:分步分组计算

核心思路是先把连续的相同布尔值分成不同的组,然后找到每个True组对应的结束时间(也就是下一个False的索引),最后算差值累加。

import pandas as pd

# 你的原始DataFrame
df = pd.DataFrame({'a': {0.0: False, 0.5: False, 1.0:False, 1.5:True, 2.0:True, 4.0:False, 8.0:True,10.0:False}})

# 第一步:给每个连续的布尔值段分配唯一分组ID
# 当当前行的a和前一行不一样时,分组ID就加1
group_ids = df['a'].ne(df['a'].shift()).cumsum()

# 第二步:过滤出所有a为True的行,按分组ID分组,取每个组的起始索引
true_groups = df[df['a']].groupby(group_ids)
start_indices = true_groups.apply(lambda x: x.index[0])

# 第三步:找到每个True段之后的第一个False索引
end_indices = []
for group_id in start_indices.index:
    # 当前True组的下一个组就是对应的False组,取它的第一个索引
    next_false_idx = df[(group_ids == group_id + 1) & (df['a'] == False)].index
    if not next_false_idx.empty:
        end_indices.append(next_false_idx[0])

# 第四步:累加所有段的时长
total_duration = sum(end - start for start, end in zip(start_indices, end_indices))

print(f"累计总时长RT = {total_duration}秒")

运行这段代码,输出就是累计总时长RT = 4.5秒,完全符合你的预期。

方法二:更简洁的分组匹配法

如果觉得上面的步骤有点繁琐,咱们可以把索引转成列,再通过分组直接匹配结束时间,逻辑更清晰:

import pandas as pd

df = pd.DataFrame({'a': {0.0: False, 0.5: False, 1.0:False, 1.5:True, 2.0:True, 4.0:False, 8.0:True,10.0:False}})

# 把索引转成单独的time列,方便后续处理
df = df.reset_index().rename(columns={'index': 'time'})

# 生成连续布尔值的分组ID
df['group'] = df['a'].ne(df['a'].shift()).cumsum()

# 提取所有True组的起始时间
true_start = df[df['a']].groupby('group')['time'].first()
# 提取所有False组的起始时间
false_start = df[~df['a']].groupby('group')['time'].first()

# 给每个True组匹配对应的下一个False组的起始时间
true_end = true_start.index.map(lambda g: false_start.get(g + 1, 0))

# 计算总时长
total_duration = (true_end - true_start).sum()

print(f"累计总时长RT = {total_duration}秒")

这个方法同样能得到正确结果,而且代码更紧凑,可读性也不错。

思路解释

咱们用ne()(不等于)和shift()来检测布尔值的变化,然后用cumsum()生成分组ID,这样每一段连续的True或False都会被分到同一个组里。接着只要找到每个True组的下一个False组的起始时间,两者的差就是这段True的持续时长,最后把所有差值加起来就是总时长啦。

内容的提问来源于stack exchange,提问作者RMRiver

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 15:13:12