如何从日度小时观测数据中筛选保留08:00-20:00时段的记录
时间区间筛选解决方案
首先你需要先把原始时间列解析为对应工具的时间类型,之后提取小时维度做条件过滤即可,以下是不同常用工具的实现方式:
1. Python(pandas 场景)
- 第一步:解析时间列
import pandas as pd # 假设你的数据集存在df变量中,时间列名为datetime df['datetime'] = pd.to_datetime(df['datetime'], format='%Y%m%d %H:%M')
- 第二步:提取小时过滤
# 保留小时大于等于8,小于等于20的记录 filter_df = df[df['datetime'].dt.hour.between(8,20, inclusive='both')] # 也可以用写法:filter_df = df[(df['datetime'].dt.hour >=8) & (df['datetime'].dt.hour <=20)]
2. R 场景
- 第一步:解析时间列
library(lubridate) # 假设数据集存在df变量中,时间列名为datetime df$datetime <- parse_date_time(df$datetime, orders = "%Y%m%d %H:%M")
- 第二步:过滤
library(dplyr) filter_df <- df %>% filter(hour(datetime) >=8 & hour(datetime) <=20)
3. SQL 场景
假设你的数据存在数据库表observation中,时间列名为dt,不同数据库语法略有差异:
- MySQL写法:
SELECT * FROM observation WHERE HOUR(dt) BETWEEN 8 AND 20;
- PostgreSQL写法:
SELECT * FROM observation WHERE EXTRACT(HOUR FROM dt) BETWEEN 8 AND 20;
注意:如果你的时间列已经是对应工具可识别的时间类型,可以跳过第一步的解析操作直接过滤。如果时间边界需要精确到分钟(比如要排除20:00:01的记录),可以额外提取分钟字段做二级条件判断,你的场景是小时级观测数据,直接判断小时维度即可满足需求。
内容的提问来源于stack exchange,提问作者noob_researcher
相关产品推荐
相关产品推荐

