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

Pandas按15分钟PeriodIndex分组失效问题求助

Pandas按15分钟分组异常问题排查与解决

问题场景

你有一个含秒级timestamp字段的31536000行×2列DataFrame,执行以下代码尝试按15分钟区间求power均值:

directory = 'data/peak_shaving/20220803_132445'
df = pd.read_csv(f'{directory}/demand_profile_simulation.csv')
df['timestamp'] = pd.to_datetime(df['timestamp'])
df = df.groupby(pd.PeriodIndex(df['timestamp'], freq="15min"))['power'].mean()

实际结果却按分钟分组,但测试天(D)、小时(H)等其他freq分组均正常。

问题原因与解决办法

  1. freq参数写法兼容性问题
    "15min"并非Pandas频率字符串的标准缩写,部分版本对该写法的解析存在异常,导致分组逻辑失效。建议替换为标准缩写"15T"(T代表分钟),修改后的代码:
df = df.groupby(pd.PeriodIndex(df['timestamp'], freq="15T"))['power'].mean()
  1. 改用更稳定的分组方式
    相比PeriodIndex,使用pd.Grouper对时间列分组的兼容性和可靠性更强,推荐写法:
df = df.groupby(pd.Grouper(key='timestamp', freq='15min'))['power'].mean()
# 或用标准缩写
df = df.groupby(pd.Grouper(key='timestamp', freq='15T'))['power'].mean()
  1. 兜底方案:先生成15分钟区间标签再分组
    如果上述方法仍有问题,可先将timestamp向下取整到15分钟区间,再基于新标签分组:
df['15min_interval'] = df['timestamp'].dt.floor('15min')
df = df.groupby('15min_interval')['power'].mean()

验证步骤

修改代码后,可通过查看分组索引的频率确认是否生效:

print(df.index.freq)
# 预期输出:<15 * Minutes> 或 <15T>

内容的提问来源于stack exchange,提问作者demetere._

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:45:20