如何从时间序列数据中剔除非工作时段,仅保留工作日7点至17点数据
你现有代码存在两处可优化调整的点:
- 对
PrimaryBookD做筛选时调用了PrimaryBookC的小时字段,两个数据框长度不一致时会出现索引匹配错误 - 仅设置了小时大于7的条件,缺少17点的上限限制
根据你的需求可以直接使用以下代码完成筛选:
方案1:保留7点整到16点59分59秒的数据(不含17点整)
PrimaryBookE = PrimaryBookD[(PrimaryBookD['Time'].dt.hour >= 7) & (PrimaryBookD['Time'].dt.hour < 17)]
方案2:保留7点整到17点59分59秒的数据(含17点整时段)
PrimaryBookE = PrimaryBookD[(PrimaryBookD['Time'].dt.hour >= 7) & (PrimaryBookD['Time'].dt.hour <= 17)]
注意事项
- 多个筛选条件需要用
&连接,每个条件必须用小括号包裹,否则会因为运算符优先级报错 - 你示例数据中的时间列带UTC时区标识,如果你需要的是北京时间的7-17点,可以先通过
PrimaryBookD['Time'] = PrimaryBookD['Time'].dt.tz_convert('Asia/Shanghai')转换时区后再做筛选
内容的提问来源于stack exchange,提问作者Emmanuelle
相关产品推荐
相关产品推荐

