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

使用Pandas计算交替输液状态事件间的时间差

解决方案:计算输液状态事件间的特定时间差

核心思路

只关注状态切换的事件(当前事件状态与上一个不同),计算每个状态切换事件与前一个状态切换事件的时间差,并将差值存入当前事件所在行。完全匹配你需要的逻辑:

  • 第一个STOPPED与第二个RUNNING的时间差存入RUNNING行
  • 第二个RUNNING与第三个STOPPED的时间差存入STOPPED行
  • 以此类推

代码实现(基于Pandas)

import pandas as pd

# 读取本地CSV数据
df = pd.read_csv('stackoverflow_data.csv')

# 将事件时间列转换为datetime类型(必须步骤,否则无法计算时间差)
df['event_time'] = pd.to_datetime(df['event_time'])

# 标记状态变化的行:当前行状态与上一行不同则为True
df['status_change'] = df['infusion_status'] != df['infusion_status'].shift(1)

# 筛选出所有状态变化的事件,计算相邻事件的时间差
status_changes = df[df['status_change']]
status_changes['time_diff'] = status_changes['event_time'].diff()

# 将计算好的时间差映射回原数据的新列
df['target_time_diff'] = df.index.map(status_changes['time_diff'])

代码说明

  1. 时间格式转换:确保event_time是datetime类型,这是计算时间差的必要前提。
  2. 状态变化标记:过滤掉连续相同的状态事件(比如连续的RUNNING),只保留需要配对的状态切换点。
  3. 时间差映射:在状态变化序列中,每个事件的time_diff就是它与前一个不同状态事件的时间间隔,直接映射回原数据即可满足需求。

结果验证

  • 第一个STOPPED之后的RUNNING行,target_time_diff会显示两者的时间差
  • 每个状态切换的事件行都会对应到与前一个不同状态事件的时间差,连续相同状态的行则为NaN(符合需求逻辑)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:01:17