如何使用Python Pandas按日期、小时、分钟筛选DataFrame行数据
问题原因
你的报错核心来自两个问题:
- pandas中Datetime类型的Series不能直接调用
.day/.hour/.minute属性,需要通过.dt访问器才能调用时间相关的属性,这就是报'Series' object has no attribute 'day'的根本原因 - 多条件逻辑运算时,每个独立条件都需要用括号包裹,否则会因为运算符优先级错误导致结果不符合预期
修正后代码
import pandas as pd # read_csv时的parse_dates参数已经完成了时间类型转换,后面重复的pd.to_datetime可以省略 data = pd.read_csv("Data\\09-16-21 AMC-5min", parse_dates=["Datetime"]) # 每个独立条件加括号,时间属性通过.dt访问器调用 newData = data[ (data.Datetime.dt.day == data.Datetime.dt.day.max()) & (data.Datetime.dt.hour == 9) & (data.Datetime.dt.minute == 30) ] print(newData)
常用时间筛选扩展方法
如果需要更灵活的时间筛选,可以参考以下写法:
- 按指定日期范围筛选
# 筛选2021年10月1日至2021年10月15日的所有数据 data[data.Datetime.between('2021-10-01', '2021-10-15')]
- 提取时间维度单独成列方便后续筛选
data['date'] = data.Datetime.dt.date data['hour'] = data.Datetime.dt.hour data['minute'] = data.Datetime.dt.minute
内容的提问来源于stack exchange,提问作者Zach Generic Name
相关产品推荐
相关产品推荐

