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

Python Pandas时间范围赋值问题:前导零致代码失效求助

问题解决方法

原代码存在几个关键错误,逐一修正后即可正常运行:

错误点分析

  1. 语法错误:时间值未用引号包裹,07:30:00不是合法的Python语法,必须写成字符串形式'07:30:00'。
  2. 逻辑错误:条件写反了,应该是时间大于等于07:30:00且小于等于20:00:00,原代码两个条件都是<=,无法筛选目标时间段。
  3. 布尔索引用法错误:Pandas中多条件筛选不能用and,必须用&,且每个条件需用括号包裹(避免运算优先级冲突)。
  4. 前导零问题:如果Time_of_Day列是字符串类型,HH:MM:SS格式的字符串比较逻辑和时间顺序完全一致,前导零不会影响判断,无需额外处理。

正确代码示例

情况1:Time_of_Day为字符串类型

直接用字符串比较即可,代码简洁高效:

# 假设要新增/修改的列名为'is_daylight',可根据实际需求调整
df.loc[(df['Time_of_Day'] >= '07:30:00') & (df['Time_of_Day'] <= '20:00:00'), 'is_daylight'] = 'daylight'

情况2:将列转为时间类型(更严谨)

如果需要后续做更多时间相关操作,建议先转成时间类型再比较:

import pandas as pd

# 转换为时间类型(仅保留时分秒部分)
df['Time_of_Day'] = pd.to_datetime(df['Time_of_Day'], format='%H:%M:%S').dt.time

# 定义目标时间范围
start_time = pd.to_datetime('07:30:00').time()
end_time = pd.to_datetime('20:00:00').time()

# 标记目标时间段
df.loc[(df['Time_of_Day'] >= start_time) & (df['Time_of_Day'] <= end_time), 'is_daylight'] = 'daylight'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 08:45:45