基于时间索引的2分钟窗口计算功率平均值(非滚动平均)
解决方案:非滚动2分钟功率均值计算
要实现非滚动的2分钟时间窗口功率平均值(即每2分钟一个独立区间,计算区间内的均值,而非滑动窗口的滚动平均),直接用Pandas的resample方法即可,这是处理时间序列聚合的标准方式,完全匹配你的需求。
核心代码示例
假设你的DataFrame pwr 已经将时间列t设为索引,且索引为datetime类型:
# 按2分钟区间聚合,计算每个区间的功率平均值 pwr_2min_avg = pwr.resample('2T')['power'].mean().reset_index()
扩展:同时处理多字段
如果需要同时计算cadence的均值(或其他统计量,比如最大值、最小值),可以用agg方法指定每个字段的聚合规则:
# 多字段聚合:计算功率均值、踏频均值 pwr_2min_stats = pwr.resample('2T').agg( average_power=('power', 'mean'), average_cadence=('cadence', 'mean') ).reset_index()
关键细节说明
resample('2T'):'2T'是时间频率缩写,代表2分钟(T对应分钟,H对应小时,S对应秒)。该方法会将时间序列划分为连续且不重叠的2分钟区间,完全区别于滚动平均的滑动窗口逻辑,能大幅减少输出数据点。- 索引类型检查:如果你的时间索引不是
datetime类型,先执行转换:pwr.index = pd.to_datetime(pwr.index) - 处理不完整区间:如果首尾区间不足2分钟,默认会保留并计算均值。若要丢弃这些不完整区间,可添加参数并过滤空值:
# 丢弃不足2分钟的区间,用右侧时间作为区间标签 pwr_2min_avg = pwr.resample('2T', closed='right', label='right')['power'].mean().dropna()
内容的提问来源于stack exchange,提问作者Hansson
相关产品推荐
相关产品推荐

