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

如何用Python将Series按时间区间拆分,筛选数据后按秒分组统计?

现有代码存在的问题

  • 未提前执行Volt.mv > 0.95的过滤逻辑,所有行都会被纳入分组计算,不符合筛选要求
  • 直接按Time.s列分组仅会将数值完全相同的时间归为同一组,如果你的Time.s是带小数的连续时间值(例如1.2s、1.7s),无法自动合并为同一秒的区间组
  • 仅实现了均值计算,没有覆盖偏差统计的需求
  • 用apply调用均值的写法冗余,执行效率低于直接对目标列做分组聚合

正确实现方案

1. 预处理:筛选有效行+生成时间分组键

如果你的Time.s是以秒为单位的浮点数,要按左闭右开的秒区间(例如[1,2)代表第1秒区间)分组,可以用向下取整生成秒级分组键:

import pandas as pd
import numpy as np

# 第一步:筛选电压大于0.95mv的有效行
filtered_ecg = ecg[ecg['Volt.mv'] > 0.95].copy()
# 第二步:生成秒级分组键,向下取整得到所属的整秒区间
filtered_ecg['second_bin'] = np.floor(filtered_ecg['Time.s']).astype(int)

如果需要自定义时间区间长度(例如按2秒、5秒为区间拆分),可以用pd.cut实现:

# 示例:按2秒为区间拆分
bin_step = 2
max_time = filtered_ecg['Time.s'].max()
bins = np.arange(0, max_time + bin_step, bin_step)
filtered_ecg['time_bin'] = pd.cut(filtered_ecg['Time.s'], bins=bins, right=False)

2. 分组聚合计算均值和偏差

这里默认偏差按组内标准偏差计算,如果你需要的是每行数据和对应组均值的偏差,也可以参考后续代码实现:

# 按秒分组,同时计算均值、标准偏差
result = filtered_ecg.groupby('second_bin')['Volt.mv'].agg(
    平均值='mean',
    标准偏差='std'
).reset_index()

# 如果需要计算每行和对应组均值的偏差,执行以下操作
filtered_ecg = filtered_ecg.merge(result[['second_bin', '平均值']], on='second_bin', how='left')
filtered_ecg['与组均值偏差'] = filtered_ecg['Volt.mv'] - filtered_ecg['平均值']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:36:10