如何安全遍历5分钟间隔的pandas DataFrame并筛选2017年小时级数据
完全不需要手动遍历计数,直接使用pandas原生的时间索引筛选+重采样功能即可,是兼容性、鲁棒性最高的实现方式
第一步:筛选2017年数据
直接基于datetime索引的年份属性筛选,无需硬编码时间范围,自动过滤末尾的2018年数据:
# 仅保留2017年的记录 energy_data_2017 = energy_data[energy_data.index.year == 2017]
第二步:按1小时粒度聚合
使用resample方法完成时间粒度重采样,自动适配时间起始点差异、数据缺失、时间间隔调整等场景,完全不需要手动维护步长计数逻辑:
# 按1小时粒度聚合,聚合函数可根据业务需求调整 # 统计求和用.sum(),求平均值用.mean(),取最大值用.max()等 hourly_agg_data = energy_data_2017.resample('H').sum() # 可选:如果需要剔除存在数据缺失的小时记录,可增加下行 # hourly_agg_data = hourly_agg_data.dropna()
方案优势
- 完全依托pandas原生时间序列处理能力,经过大量工业场景验证,稳定性远高于自定义遍历逻辑
- 自动适配特殊起始时间:2017年1月1日从6点开始的情况不需要额外处理,resample会自动以第一条数据的时间为基准对齐小时区间
- 兼容性强:后续如果数据时间间隔调整、出现数据缺失,脚本都不会报错,仅会在缺失时段返回NaN,可灵活选择填充或丢弃
- 逻辑简洁易维护,不需要额外处理边界条件
内容的提问来源于stack exchange,提问作者Preston_Jarvis
相关产品推荐
相关产品推荐

