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

读取Parquet文件并清理重复启动码1.5.30以计算作业运行时长

处理连续重复启动码并计算单作业总运行时长

假设你的DataFrame列名为event_code(存储启动码或运行时长字符串),已经通过object_id过滤出目标数据,以下是具体处理方案:

步骤1:标记启动码并过滤连续重复的启动记录

先识别所有启动码行,再剔除掉紧跟在启动码后的重复启动码:

import pandas as pd

# 假设你的DataFrame名为df
df['is_start'] = df['event_code'] == '1.5.30'

# 标记连续重复的启动码行:当前是启动码且上一行也是启动码
df['is_duplicate_start'] = df['is_start'] & df['is_start'].shift(1).fillna(False)

# 过滤掉重复的启动码行
filtered_df = df[~df['is_duplicate_start']].copy()

步骤2:为每个有效作业分配唯一ID

基于过滤后的启动码,用累计求和生成作业分组ID:

# 对启动码行累计计数,生成作业ID
filtered_df['job_id'] = filtered_df['is_start'].cumsum()

步骤3:计算每个作业的总运行时长

过滤掉启动码行,将时长字符串转为数值后按作业ID求和:

# 筛选出时长记录,转换为数值类型
duration_records = filtered_df[~filtered_df['is_start']].copy()
duration_records['duration'] = pd.to_numeric(duration_records['event_code'], errors='coerce')

# 按作业ID计算总时长
total_duration_per_job = duration_records.groupby('job_id')['duration'].sum().reset_index()

补充说明

  • 如果你的时长字符串存在非数值异常值,pd.to_numeric的errors='coerce'会将其转为NaN,后续可根据需求选择丢弃或填充处理
  • 确保处理前数据按时间先后排序,否则分组逻辑会出现错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 15:14:57