Pandas如何处理.dt.time时间戳实现DataFrame指定条件筛选
问题解决方法
报错核心原因
- 类型不匹配:
enter_dt_tm用.dt.time提取的结果是datetime.time类型,无法直接和字符串格式的时间做比较,需要将比较阈值也转为同类型。 - 运算符优先级错误:Pandas中
&的优先级高于比较运算符,未给单个判断条件加括号会导致运算顺序错乱。 - 逻辑判断错误:「时间不在07:40到08:00区间」不能写作
时间<=07:40 且 时间>=08:00,这两个条件无法同时成立,需要用取反逻辑实现。
可行代码
首先导入datetime工具类:
import datetime
再执行筛选逻辑:
# 定义阈值 min_duration = datetime.timedelta(minutes=15) time_low = datetime.time(7, 40, 0) time_high = datetime.time(8, 0, 0) # 构造筛选条件 cond1 = df_to_db['08:00-23:00'] >= min_duration cond2 = ~((df_to_db['enter_dt_tm'].dt.time >= time_low) & (df_to_db['enter_dt_tm'].dt.time <= time_high)) # 合并条件筛选 test_df = df_to_db[cond1 & cond2] print(test_df)
运行上述代码后得到的结果就是符合要求的第一行数据。
内容的提问来源于stack exchange,提问作者James Y
相关产品推荐
相关产品推荐

