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

如何从含dd-mmm-yy格式日期的CSV文件中按季节筛选数据?

解决dd-mmm-yy格式日期转换与季节数据筛选问题

核心步骤说明

先搞定dd-mmm-yy格式日期的解析,再修正原代码的语法错误,最终实现按季节筛选数据。


1. 读取并解析日期列

用pandas读取CSV时,直接指定日期列的解析格式,同时处理两位数年份的世纪推断(避免把53误判为2053):

import pandas as pd

# 读取CSV并解析date列为datetime类型
data = pd.read_csv('your_dataset.csv', parse_dates=['date'], date_format='%d-%b-%y')

# 确保两位数年份映射到19xx(根据你的数据实际年份范围调整)
data['date'] = data['date'].apply(lambda x: x.replace(year=x.year + 1900) if x.year < 100 else x)

2. 两种筛选方式(二选一即可)

方式一:转换为yyyymmdd整数后筛选

生成yyyymmdd格式的整数列,再按原计划筛选(必须给每个比较条件单独加括号,否则会因运算符优先级报错):

# 生成yyyymmdd格式的整数列
data['yyyymmdd'] = data['date'].dt.strftime('%Y%m%d').astype(int)

# 筛选1953年春季数据
dataset_Spring_1953 = data.loc[(data['yyyymmdd'] >= 19530301) & (data['yyyymmdd'] < 19530601)]

# 筛选1953年夏季数据
dataset_Summer_1953 = data.loc[(data['yyyymmdd'] >= 19530601) & (data['yyyymmdd'] < 19530901)]

# 筛选1953年秋季数据
dataset_Autumn_1953 = data.loc[(data['yyyymmdd'] >= 19530901) & (data['yyyymmdd'] < 19531201)]

# 筛选1953年冬季数据(跨年度)
dataset_Winter_1953 = data.loc[(data['yyyymmdd'] >= 19531201) & (data['yyyymmdd'] < 19540301)]

方式二:直接用datetime对象筛选(更推荐)

不用转换整数,直接用datetime对象做范围比较,逻辑更直观且不易出错:

# 定义各季节的起止日期
spring_start = pd.to_datetime('1953-03-01')
spring_end = pd.to_datetime('1953-06-01')
summer_start = pd.to_datetime('1953-06-01')
summer_end = pd.to_datetime('1953-09-01')
autumn_start = pd.to_datetime('1953-09-01')
autumn_end = pd.to_datetime('1953-12-01')
winter_start = pd.to_datetime('1953-12-01')
winter_end = pd.to_datetime('1954-03-01')

# 按季节筛选数据
dataset_Spring_1953 = data.loc[(data['date'] >= spring_start) & (data['date'] < spring_end)]
dataset_Summer_1953 = data.loc[(data['date'] >= summer_start) & (data['date'] < summer_end)]
dataset_Autumn_1953 = data.loc[(data['date'] >= autumn_start) & (data['date'] < autumn_end)]
dataset_Winter_1953 = data.loc[(data['date'] >= winter_start) & (data['date'] < winter_end)]

关键注意事项

  • 运算符优先级:原代码缺少括号,&的优先级高于>=/<,必须给每个比较条件单独包裹括号,否则会触发逻辑错误或语法报错。
  • 两位数年份处理:pandas默认对%y格式的解析规则可能因版本/环境有差异,手动指定世纪(如19xx)可避免年份推断错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:32:52