如何检查DataFrame最后一行的时间戳是否在两个时间段之间?
高效判断DataFrame最后一行时间是否在指定时段的方法
不用折腾between_time,直接提取最后一行时间的小时数做判断就行,这是最高效的方式,不用处理整个数据集:
方法一:直接操作Timestamp对象
先取出最后一行的时间值(这是个Timestamp对象),直接用.hour属性获取小时,再判断范围:
# 接你原有的代码 last_time = df.iloc[-1]['time'] # 判断是否在16:00-21:00之间(根据需求调整边界,比如要包含21:00就改成<=21) is_in_target_range = 16 <= last_time.hour < 21
方法二:用pandas的dt属性批量提取小时后取最后一个值
如果习惯用pandas的链式操作,也可以这么写:
hour = df['time'].dt.hour.iloc[-1] is_in_target_range = (hour >= 16) & (hour <= 21)
为什么你的between_time会报错?
between_time是给DatetimeIndex类型的索引用的方法,你当前的DataFrame索引是默认的整数索引,所以会报Index must be DatetimeIndex错误。就算你把索引改成time列,用between_time筛选后再判断最后一行是否在结果里,也完全没必要——毕竟我们只需要检查最后一行,没必要处理整个数据集。
内容的提问来源于stack exchange,提问作者Allure
相关产品推荐
相关产品推荐

