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

基于含Datetime标签的Dataframe计算设备运行周期时长、均值等指标

批量处理设备运行周期的实现方案

核心思路

通过时间序列标记+分组聚合的方式,自动识别每个完整的运行周期(从machine_started=1切换到machine_started=0),并批量计算周期统计指标。

步骤实现(基于Pandas)

假设你的DataFrame包含Datetime(时间戳)、machine_started(运行状态:1=运行,0=停机)、voltage(电压值)、hours(累计运行时长)字段,具体代码如下:

  1. 数据预处理
    先确保时间序列有序,避免因乱序导致周期识别错误:
import pandas as pd

# 转换时间字段为datetime类型
df['Datetime'] = pd.to_datetime(df['Datetime'])
# 按时间排序并重置索引
df = df.sort_values('Datetime').reset_index(drop=True)
  1. 标记运行周期
    通过状态变化生成唯一的周期ID,区分不同运行时段:
# 标记周期启动点:上一状态为停机(0)、当前状态为运行(1)
df['cycle_start'] = (df['machine_started'] == 1) & (df['machine_started'].shift(1) == 0)
# 生成周期ID:每个启动点后的数据归为同一周期
df['cycle_id'] = df['cycle_start'].cumsum()
# 筛选仅运行状态的数据,排除停机时段
running_data = df[df['machine_started'] == 1].copy()
  1. 批量计算周期统计量
    按周期ID分组,聚合所需指标:
cycle_metrics = running_data.groupby('cycle_id').agg(
    # 周期启动时刻(取该周期第一条记录的时间)
    cycle_start_time=('Datetime', 'first'),
    # 电压均值与标准差
    voltage_mean=('voltage', 'mean'),
    voltage_std=('voltage', 'std'),
    # 周期时长:用累计hours的差值计算(若hours为累计运行时长)
    cycle_duration_hours=('hours', lambda x: x.max() - x.min()),
    # 若用时间戳计算时长(更准确),替换为:
    # cycle_duration_hours=('Datetime', lambda x: (x.max() - x.min()).total_seconds() / 3600)
).reset_index(drop=True)
  1. 过滤未完成周期(可选)
    如果需要排除尚未结束的周期(即最后一条记录仍为machine_started=1),可添加以下逻辑:
# 标记周期结束点:上一状态为运行(1)、当前状态为停机(0)
df['cycle_end'] = (df['machine_started'] == 0) & (df['machine_started'].shift(1) == 1)
# 获取所有已完成周期的ID
completed_cycle_ids = df[df['cycle_end']]['cycle_id'].shift(-1).dropna().astype(int)
# 仅保留已完成的周期指标
completed_cycle_metrics = cycle_metrics[cycle_metrics['cycle_id'].isin(completed_cycle_ids)]

关键说明

  • 必须确保Datetime字段是有序的,否则周期识别会出现错误。
  • 如果你的电压字段名不是voltage,需替换为实际字段名。
  • 周期时长的计算可根据hours字段的定义选择对应方式:若hours是设备累计运行时长,用max-min;若hours是时间戳的小时部分,建议用时间戳差值计算更准确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:45:11