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

如何对pandas DataFrame按15分钟区间分组并覆盖全天所有时段

解决方法

你可以通过生成当日全量15分钟时间索引,再把分组求和结果重索引的方式实现需求,完整代码如下:

import pandas as pd

# 1. 先确保time列为datetime格式
df['time'] = pd.to_datetime(df['time'])

# 2. 按15分钟分组求和
grouped_sum = df.groupby(pd.Grouper(key="time", freq="15Min"))['Q'].sum()

# 3. 生成当日完整的15分钟时间序列
target_date = df['time'].dt.date.iloc[0]
full_time = pd.date_range(
    start=target_date, 
    end=target_date + pd.Timedelta(days=1), 
    freq='15T', 
    inclusive='left' # 左闭右开,刚好覆盖00:00到23:45的所有区间
)

# 4. 重索引补全所有时段,无数据默认填充NaN,需要填0可以加参数fill_value=0
result = grouped_sum.reindex(full_time).reset_index(names='time').rename(columns={'Q':'SUM(Q)'})

简化写法

如果使用pandas 1.1.0及以上版本,也可以通过pd.Grouper的origin参数指定分组起点,再用asfreq补全区间:

df['time'] = pd.to_datetime(df['time'])
result = df.groupby(
    pd.Grouper(key="time", freq="15Min", origin="start_day")
)['Q'].sum().asfreq('15T').reset_index(name='SUM(Q)')

如果需要把空值替换为0,在asfreq里加fill_value=0即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 10:15:00