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

如何使用Python筛选时间序列中每年9月至次年3月的区间数据

Python筛选每年9月至次年3月时间序列数据实现方法

前置依赖

使用pandas库完成数据处理,未安装可先执行安装命令:
pip install pandas

完整实现步骤

1. 加载数据并标准化日期格式

首先将原始数据的日期列转换为pandas可识别的时间格式,注意根据你的日期存储格式调整dayfirst参数:如果你的日期是日/月/年格式(比如01/12/2020代表2020年12月1日)则设为True,如果是月/日/年格式(比如01/12/2020代表2020年1月12日)则设为False。

import pandas as pd

# 读取本地csv文件,替换为你的实际文件路径
df = pd.read_csv("your_dataset.csv")
# 转换日期列为标准时间格式
df["Date"] = pd.to_datetime(df["Date"], dayfirst=False)

2. 核心筛选逻辑

因为目标区间跨自然年度,直接按月份数值做大小判断会出现逻辑错误,直接匹配符合要求的月份即可:

  • 每年1、2、3月的数据,属于上一年9月启动的跨年度区间
  • 每年9、10、11、12月的数据,属于当年启动的跨年度区间
# 提取每行日期的月份
df["month_col"] = df["Date"].dt.month
# 筛选目标月份的数据
result_df = df[df["month_col"].isin([1, 2, 3, 9, 10, 11, 12])].copy()
# 删除临时生成的月份列
result_df.drop(columns=["month_col"], inplace=True)

可选:给每个跨年度周期打标签

如果后续需要按「当年9月-次年3月」的完整周期做分组聚合,可以给每行数据匹配对应的周期标识:

df["year_col"] = df["Date"].dt.year
df["month_col"] = df["Date"].dt.month

def match_period(row):
    m = row["month_col"]
    y = row["year_col"]
    if 1 <= m <=3:
        return f"{y-1}年9月-{y}年3月"
    elif 9 <= m <=12:
        return f"{y}年9月-{y+1}年3月"
    else:
        return pd.NA

df["period"] = df.apply(match_period, axis=1)
# 筛选后得到带周期标签的目标数据
result_df = df[df["period"].notna()].drop(columns=["year_col", "month_col"])

结果校验

筛选完成后可以执行以下命令快速校验结果是否正确,正常返回的月份统计只会包含1、2、3、9、10、11、12七个值:

print(result_df["Date"].dt.month.value_counts().sort_index())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:54:18