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

如何在Pandas中处理字符串时间差的正负判断并添加状态列?

解决思路

1. 转换字符串时间差为可比较的Timedelta类型

Pandas内置的pd.to_timedelta()函数可以直接解析"X days HH:MM:SS"格式的时间差字符串(支持正负值),将其转换为可进行数值比较的Timedelta对象:

import pandas as pd
import numpy as np

# 转换extra_time列为Timedelta类型
df['extra_timedelta'] = pd.to_timedelta(df['extra_time'])

2. 向量化生成标记列

避免使用for循环(Pandas中向量化操作效率远高于循环),用np.where()根据条件直接生成目标列:

# 正时间差标记为Intime,否则标记为offtime
df['status'] = np.where(df['extra_timedelta'] >= pd.Timedelta(0), 'Intime', 'offtime')

如果不需要保留中间的extra_timedelta列,可以合并为一行代码:

df['status'] = np.where(pd.to_timedelta(df['extra_time']) >= pd.Timedelta(0), 'Intime', 'offtime')

原代码的问题点

  • for extra_time in df遍历的是DataFrame的列名,而非每行的extra_time值,逻辑完全错误。
  • 赋值时误用了比较运算符==,正确的赋值应该用=。
  • 字符串类型的时间差无法直接与整数0比较,必须先转换为Timedelta类型。

内容的提问来源于stack exchange,提问作者Gustavo Felippe de Oliveira

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:51:16