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

非时间戳格式时间列计算到00:30:00的timedelta实现方法

实现方案

你可以将字符串格式的时间转换为pandas的Timedelta类型后做差值计算,核心逻辑是:如果时间早于00:30:00,直接算和基准的差值;如果晚于基准,按跨天计算到次日00:30:00的差值即可。

完整代码示例

import pandas as pd

# 构造示例数据
df = pd.DataFrame({'Time': ['22:30:00', '23:30:00', '00:15:00']})

# 1. 转换字符串为Timedelta类型
df['Time'] = pd.to_timedelta(df['Time'])

# 2. 定义基准时间和1天的时间差常量
base_time = pd.Timedelta('00:30:00')
one_day = pd.Timedelta(days=1)

# 3. 向量化计算目标差值(比apply性能更高,适合大数据量)
mask = df['Time'] < base_time
df['Output'] = pd.Series(dtype='timedelta64[ns]')
df.loc[mask, 'Output'] = base_time - df.loc[mask, 'Time']
df.loc[~mask, 'Output'] = one_day - (df.loc[~mask, 'Time'] - base_time)

# 4. 可选:转换为字符串格式,去掉默认的"0 days"前缀
df['Output'] = df['Output'].astype(str).str.split().str[-1]

运行后输出的df和期望结果完全一致:

TimeOutput
0 days 22:30:0002:00:00
0 days 23:30:0001:00:00
0 days 00:15:0000:15:00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 03:54:02