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

Python如何判断HH:mm:ss格式时间是否在DataFrame两列区间内

问题原因
  • 列名大小写不匹配:你代码里写的Col_a、Col_b,但实际DataFrame的列名是小写的col_a、col_b,无法匹配到对应列
  • 比较逻辑写反:你要判断check_time落在col_a和col_b之间,正确逻辑是col_a < check_time < col_b,你写的逻辑刚好完全反向
  • 字符串直接比较存在潜在风险:虽然HH:MM:SS格式的字符串字典序和时间顺序一致,但更稳妥的方式是先转成pandas时间类型,避免格式不统一导致的判断错误
实现代码
import pandas as pd

# 构造示例df1,你实际使用时可以跳过这步
df1 = pd.DataFrame({
    'col_a': ['00:00:15', '00:02:45'],
    'col_b': ['00:01:15', '00:04:00'],
    'col_c': ['00:01:30', '00:05:30'],
    'col_d': ['00:02:30', '00:06:30']
})

# 转换所有时间列为timedelta类型,适配时间比较
time_cols = ['col_a', 'col_b', 'col_c', 'col_d']
df1[time_cols] = df1[time_cols].apply(pd.to_timedelta)
check_time = pd.to_timedelta("00:01:00")

# 筛选符合条件的行,提取col_b,如需包含端点可把<换成<=
result = df1.loc[(df1['col_a'] < check_time) & (df1['col_b'] > check_time), 'col_b']

# 转换回HH:MM:SS字符串格式输出
result = result.astype(str).str.split().str[-1]
print(result)

如果你的数据已经保证是标准HH:MM:SS格式,也可以直接用字符串比较简化处理:

check_time = "00:01:00"
result = df1.loc[(df1['col_a'] < check_time) & (df1['col_b'] > check_time), 'col_b']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 08:27:02