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

Pandas比较时间列与datetime值出现语法错误如何修改代码

语法错误原因
  • 自定义函数中if判断语句末尾缺少英文冒号,不符合Python基础语法规则
  • 引用hour列时未将列名用引号包裹,会被解释器识别为未定义变量
  • 若未提前导入datetime模块,调用datetime.time时也会触发报错
保留apply逻辑的修改方案(可读性优先)

将函数参数名改为row避免和整个DataFrame重名,补全所有语法缺失项:

import datetime
import pandas as pd

# 原有DataFrame构造逻辑
date1 = pd.Series(pd.date_range('2018-1-1 12:00:00', periods=2, freq='M'))
date2 = pd.Series(pd.date_range('2019-3-11 21:45:00', periods=2, freq='W'))
date_df = pd.DataFrame(dict(Start_date = date1, End_date = date2))
date_df['hour'] = date_df['End_date'].dt.time

# 修改后的判断函数
def time_flag(row):
    if row['hour'] < datetime.time(hour=21, minute=46, second=0):
        return 1
    else:
        return 0

date_df['NewColumn'] = date_df.apply(time_flag, axis=1)
更优向量化实现方案

pandas内置向量化运算效率远高于逐行apply,且代码更简洁易懂:

import datetime
# 布尔值直接转整数,True对应1,False对应0
date_df['NewColumn'] = (date_df['hour'] < datetime.time(21,46,0)).astype('int')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 05:54:04