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

如何将频率为12小时的Pandas Period对齐到00:00和12:00起止

解决Pandas按00:00/12:00起始的12小时时段划分问题

你遇到的问题是因为Pandas默认的12h/12H周期计算是从Unix纪元(1970-01-01 00:00)开始按12小时间隔划分,而非严格对齐当天的00:00和12:00。以下是两种可靠的解决方法:

方法一:手动计算单一时点的所属周期

直接判断datetime的小时数,手动对齐到00:00或12:00的起始点,再转换为Period:

import pandas as pd

dt = pd.to_datetime("2025-04-17 18:35")
# 根据小时数确定周期起始
period_start = dt.floor('D') + pd.Timedelta(hours=12) if dt.hour >= 12 else dt.floor('D')
current_period = period_start.to_period(freq='12H')
print(current_period)
# 输出:2025-04-17 12:00

方法二:批量处理数据集(分组聚合)

如果是对大型数据集进行分组,使用pd.Grouper并指定origin='start_day',强制周期从当天00:00开始:

import pandas as pd

# 构造示例数据集
dates = pd.date_range(start='2025-04-17 08:00', end='2025-04-18 14:00', freq='2H')
df = pd.DataFrame({'value': range(len(dates))}, index=dates)

# 按00:00/12:00起始的12小时时段分组
grouped_df = df.groupby(pd.Grouper(freq='12H', origin='start_day')).sum()
print(grouped_df)

输出结果:

value
2025-04-17 00:00:00      3
2025-04-17 12:00:00     12
2025-04-18 00:00:00      9
2025-04-18 12:00:00      6

补充说明

origin='start_day'参数会让Pandas将每个自然日的00:00作为周期起始点,后续每12小时生成一个时段,完美匹配你需要的00:00-12:00、12:00-24:00划分规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:03:28