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

如何筛选Pandas中每月每日9:15-9:20的数据行及解决筛选报错

解决股票数据时间范围筛选问题

先处理第一个错误:"Can only use .dt accessor with datetimelike values"

这个错误的核心是你的datetime列不是datetime64类型,.dt访问器仅支持该类型的列。先将列转换成正确类型:

import pandas as pd
import datetime

# 转换datetime列为datetime64类型
df['datetime'] = pd.to_datetime(df['datetime'])

正确筛选9:15-9:20数据的两种方法

方法一:直接基于datetime列筛选

利用.dt.time提取时间部分,结合布尔索引筛选目标时间段:

# 生成时间筛选掩码:时间在9:15(含)到9:20(含)之间
time_mask = (df['datetime'].dt.time >= datetime.time(9, 15)) & (df['datetime'].dt.time <= datetime.time(9, 20))
# 注意:用方括号索引DataFrame,不是圆括号(你之前写的df(time_mask==True)是语法错误)
rslt_df = df[time_mask]

方法二:拆分日期和时间列后筛选

如果需要单独保留日期、时间列,先拆分再筛选:

# 拆分出日期和时间列
df['date'] = df['datetime'].dt.date
df['time'] = df['datetime'].dt.time

# 生成筛选掩码并提取结果
time_mask = (df['time'] >= datetime.time(9, 15)) & (df['time'] <= datetime.time(9, 20))
rslt_df = df[time_mask]

关键注意点

  • 必须确保datetime列是datetime64类型,否则.dt访问器无法使用
  • 筛选DataFrame时用方括号[],不是圆括号()——圆括号用于调用函数,这是你第二个错误的原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:00:57