如何筛选DataFrame日期列中最大日期前后特定时段的数据?
筛选DataFrame特定时间范围的记录
1. 确保日期列为datetime类型
如果TemporaryDateFilter列还未转换为datetime格式,先执行类型转换:
import pandas as pd final_report['TemporaryDateFilter'] = pd.to_datetime(final_report['TemporaryDateFilter'])
2. 自动计算目标时间范围
基于列中的最大日期,自动生成需要筛选的时间区间:
# 获取列中最大日期的日期部分(忽略具体时分秒) max_date = final_report['TemporaryDateFilter'].dt.date.max() # 生成起始时间:最大日期前一天的20:01:00 start_time = pd.Timestamp(f"{max_date - pd.Timedelta(days=1)} 20:01:00") # 生成结束时间:最大日期当天的05:59:00 end_time = pd.Timestamp(f"{max_date} 05:59:00")
3. 筛选符合条件的记录
使用布尔索引提取目标时间范围内的所有记录:
filtered_report = final_report[(final_report['TemporaryDateFilter'] >= start_time) & (final_report['TemporaryDateFilter'] <= end_time)]
补充说明
- 代码会自动适配每日更新的报表,无需手动修改日期参数
- 若
TemporaryDateFilter列已经是datetime类型,可直接跳过步骤1
内容的提问来源于stack exchange,提问作者martinworkshere
相关产品推荐
相关产品推荐

