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

在Pandas中仅当指定列匹配时计算秒级时间差

按设备分组计算时间差的解决方案

直接用以下代码就能实现需求:

# 计算时间差,再根据设备是否匹配过滤,最后填充空值
df['SEC'] = (
    df['time'].diff().dt.total_seconds()
    .where(df['DeviceName'] == df['DeviceName'].shift(), 0)
    .fillna(0)
)

代码说明

  • df['time'].diff().dt.total_seconds():和你原来的代码逻辑一致,计算每行与上一行的时间差(单位为秒)
  • .where(df['DeviceName'] == df['DeviceName'].shift(), 0):shift()会把设备名列整体下移一行,通过对比当前行与上一行的设备名,仅保留设备相同时的时间差,不匹配时直接设为0
  • .fillna(0):处理第一行的空值(第一行没有上一行,diff()结果为NaN),将其设为0;如果需要保留第一行空值,去掉这部分即可

验证示例

用你给出的测试数据运行代码后,结果与示例完全一致:

timeSECDeviceName
4/18/2023 2:43:000Applied_AA-12
4/18/2023 3:13:001800Applied_AA-12
4/18/2023 3:35:530Applied_AA-14
4/18/2023 3:36:0310Applied_AA-14

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:07:44