Pandas非0点起始按天重采样实现:如何将每日统计起止设为06:00
解决方案
可通过时间偏移预处理+重采样+回补偏移的方案实现,该方案对Pandas 0.3版本兼容性最好,无需依赖高版本新增参数:
- 第一步:将DataFrame的时间索引减去6小时,对齐到自然日0点边界
- 第二步:沿用原有按天重采样逻辑执行求和计算
- 第三步:将重采样后的时间索引加回6小时,最终得到以每日06:00为统计起始边界的结果
对应示例代码:
# 偏移时间索引,对齐自然日边界 my_df.index = my_df.index - pd.DateOffset(hours=6) # 按天重采样求和 resampled_df = my_df.resample('D', label='left').sum() # 回补偏移量,恢复6点为起始的时间标签 resampled_df.index = resampled_df.index + pd.DateOffset(hours=6)
你也可以直接使用带偏移的频率参数简化写法,Pandas 0.3已支持该语法:
resampled_df = my_df.resample('24H', label='left', loffset='6H').sum()
注意:
loffset参数仅修改最终输出的索引标签,不会调整重采样的实际计算边界,若你数据集的起始时间不固定,更推荐使用第一种偏移预处理方案,计算逻辑更可控。
内容的提问来源于stack exchange,提问作者martin genot
相关产品推荐
相关产品推荐

