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

如何统计Pandas DataFrame中连续3行速度超过限速的出现次数

代码实现方案

实现思路

  • 先对每行数据生成超速标记:判断当前行速度是否大于限速25.3
  • 按人员姓名分组后,识别连续超速的区间块
  • 统计每个人员名下长度≥3的连续超速区间数量,最终转成字典格式输出

完整代码

import pandas as pd

# 限速定义
limit = 25.3

def count_overspeed_events(group):
    # 生成连续块标识:数值变化时标识+1
    block_id = (group['over_limit'] != group['over_limit'].shift()).cumsum()
    # 筛选出超速的块,统计每个块的长度
    valid_blocks = block_id[group['over_limit']].value_counts()
    # 统计长度≥3的块的数量
    return (valid_blocks >= 3).sum()

# 构造示例输入数据(实际使用时替换成自己的DataFrame即可)
data = [
    ["Mary",25.6,0.1],["Mary",25.8,0.2],["Mary",25.1,0.3],["Mary",24.4,0.4],
    ["Mary",24.2,0.5],["Mary",25.8,0.6],["Mary",25.9,0.7],["Mary",25.8,0.8],
    ["Mary",25.4,0.9],["Mary",24.9,1.0],["Mary",25.6,1.1],["Mary",25.8,1.2],
    ["Mary",26.2,1.3]
]
df = pd.DataFrame(data, columns=["Name","speed","time"])

# 生成超速标记列
df['over_limit'] = df['speed'] > limit

# 按姓名分组统计超速事件次数,转成字典
result = df.groupby('Name').apply(count_overspeed_events).to_dict()

print(result)

输出结果

运行上述代码得到的输出和要求一致:

{'Mary': 2}

内容的提问来源于stack exchange,提问作者Christian Rønsholt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 04:18:02