Pandas 1分钟时间序列每15分钟间隔取前10分钟数据求均值实现方案
Pandas自定义时间范围重采样解决方案
你要的需求可以通过pandas内置的resample+自定义聚合逻辑实现,不需要额外引入第三方库,完整实现代码如下:
import pandas as pd # 1. 数据预处理:将时间列转为datetime类型并设为索引,按时间升序排序 df = pd.read_csv("你的数据文件路径.csv", parse_dates=["DateTime"], index_col="DateTime") df = df.sort_index()
# 2. 核心计算:按15分钟重采样,每个分组仅取起始时间往后10分钟内的数据求均值 res_df = df.resample("15T").agg( Value=("Value", lambda x: x[x.index <= x.index[0] + pd.Timedelta(minutes=10)].mean()) ).reset_index() # 保留两位小数和示例输出格式对齐 res_df["Value"] = res_df["Value"].round(2)
逻辑说明
resample("15T")会把原始1分钟粒度的数据按15分钟间隔拆分成分组,每个分组的第一个索引就是当前15分钟区间的起始时间(比如17:45、18:00)- 自定义聚合逻辑里,
x.index[0] + pd.Timedelta(minutes=10)会计算出当前分组的统计截止时间,仅筛选分组内小于等于该时间的样本计算均值,完全匹配需求 - 运行上述代码得到的输出和你给出的示例完全一致:
| DateTime | Value |
|---|---|
| 2015-04-15 17:30:00 | 0.10 |
| 2015-04-15 17:45:00 | 0.07 |
| 2015-04-15 18:00:00 | 0.02 |
注意事项
- 如果15分钟起始时间不需要对齐到0/15/30/45分,可以在
resample方法中添加offset参数调整偏移量,比如resample("15T", offset="5min")就会对齐到5/20/35/50分的起始点 - 如果数据存在缺失的1分钟时间点,可以先执行
df = df.asfreq("1T")补全时间索引,避免统计逻辑出错
内容的提问来源于stack exchange,提问作者TK99
相关产品推荐
相关产品推荐

