如何从长期年度时间序列中筛选每年4月24日至9月28日的季节性数据
提取每年4月24日至9月28日的时间序列数据
下面针对不同常用工具,给出具体实现方法:
Python(Pandas)
- 先确保时间列是
datetime类型,若不是则先转换:
import pandas as pd df['date'] = pd.to_datetime(df['date'])
- 两种筛选方式可选:
- 方式一:通过月日字符串比较
# 生成格式为'0424'的月日字符串 df['month_day'] = df['date'].dt.strftime('%m%d') # 筛选目标区间数据 filtered_df = df[(df['month_day'] >= '0424') & (df['month_day'] <= '0928')] - 方式二:直接通过月、日数值判断(更严谨,避免字符串格式问题)
filtered_df = df[ ((df['date'].dt.month == 4) & (df['date'].dt.day >= 24)) | (df['date'].dt.month.between(5, 8)) | ((df['date'].dt.month == 9) & (df['date'].dt.day <= 28)) ]
- 方式一:通过月日字符串比较
R(dplyr + lubridate)
- 加载依赖包并转换日期类型:
library(dplyr) library(lubridate) df$date <- ymd(df$date) # 若原始格式不同,可改用as.Date(df$date)
- 筛选目标区间:
filtered_df <- df %>% filter( (month(date) == 4 & day(date) >= 24) | between(month(date), 5, 8) | (month(date) == 9 & day(date) <= 28) )
SQL
假设日期列名为date_col,直接用WHERE子句筛选:
SELECT * FROM your_table WHERE (EXTRACT(MONTH FROM date_col) = 4 AND EXTRACT(DAY FROM date_col) >= 24) OR EXTRACT(MONTH FROM date_col) BETWEEN 5 AND 8 OR (EXTRACT(MONTH FROM date_col) = 9 AND EXTRACT(DAY FROM date_col) <= 28);
内容的提问来源于stack exchange,提问作者Sana
相关产品推荐
相关产品推荐

