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

如何筛选DataFrame中每年4-10月的datetime类型数据?

问题解决:筛选每年4-10月的datetime数据

错误原因

你直接将datetime64[ns]类型的date列与字符串进行比较,类型不兼容,因此触发TypeError: Invalid comparison between dtype=datetime64[ns] and str。

可行解决方案

你的需求完全可以实现,以下是两种可靠的实现方式:

方法一:通过月份快速筛选(简洁高效)

利用pandas的dt.month属性提取日期的月份,直接筛选4-10月的数据:

filtered_df = df.loc[df['date'].dt.month.between(4, 10)]

该方法会自动保留每年4月1日00:00到10月31日23:59:59的所有数据,符合你的需求。

方法二:精确匹配年度日期区间(严格控制时间点)

如果需要严格匹配每年4月1日00:00:00至10月31日23:59:59的时间范围,可以循环构造每个年份的区间条件:

import pandas as pd

# 获取数据覆盖的所有年份
min_year = df['date'].dt.year.min()
max_year = df['date'].dt.year.max()
years = range(min_year, max_year + 1)

# 构造每个年份的筛选条件
filter_conditions = []
for year in years:
    period_start = pd.Timestamp(f"{year}-04-01 00:00:00")
    period_end = pd.Timestamp(f"{year}-10-31 23:59:59")
    filter_conditions.append((df['date'] >= period_start) & (df['date'] <= period_end))

# 合并条件并筛选数据
filtered_df = df.loc[pd.concat(filter_conditions, axis=1).any(axis=1)]

两种方法都能实现你要的效果:2015-10-31 23:59:59之后的数据会直接显示2016-04-01 00:00:00及之后的符合条件的记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:20:35