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

如何在时序数据集中标记特定时间区间内的行(睡眠时段标记)

问题解决:判断Datetime是否处于睡眠时间区间

错误原因分析

你写的代码里,merged[merged['sleep_start_time']]这类写法完全错误——你把列的值当成了DataFrame的列名去索引,这直接触发KeyError,因为这些时间值根本不是数据集的列名。

正确实现方式

直接对列进行逐元素比较,即可生成判断结果:

方法1:生成布尔列(可转为0/1整数)

# 先生成布尔值列,True代表该时间点处于睡眠区间内
merged['sleep'] = (merged['sleep_start_time'] <= merged['datetime']) & (merged['datetime'] <= merged['sleep_end_time'])

# 若需要将布尔值转为0/1整数格式
merged['sleep'] = merged['sleep'].astype(int)

方法2:用numpy快速生成0/1列

import numpy as np
merged['sleep'] = np.where(
    (merged['sleep_start_time'] <= merged['datetime']) & (merged['datetime'] <= merged['sleep_end_time']),
    1,
    0
)

验证说明

针对你提供的样本数据,运行上述代码后,所有行的sleep列都会返回0,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:17:06