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

如何使用Pandas按sub和window分组计算mean、stdev、rms的平均值?

解决方法:用Pandas分组聚合计算每组均值

这需求用Pandas的groupby配合聚合操作就能完美解决,刚好能处理不同受试者同一窗口行数不一的情况,我给你一步步拆解:

核心思路

我们需要先按**受试者(sub列)和窗口(window列)**的组合来分组,然后对每个分组里的mean、stdev、rms三列分别计算平均值——Pandas会自动忽略每组行数的差异,只针对组内数据计算。

具体代码

假设你的DataFrame名叫df,直接运行下面的代码即可:

# 按sub和window分组,计算指定列的平均值
result_df = df.groupby(['sub', 'window'])[['mean', 'stdev', 'rms']].mean().reset_index()

代码解释

  • groupby(['sub', 'window']):把数据按「受试者+窗口」的唯一组合分成一个个独立的小组,比如S03的窗口1是一组,S26的窗口5是另一组。
  • [['mean', 'stdev', 'rms']]:明确指定只对这三列做聚合操作,避免处理其他无关列。
  • .mean():对每个分组内的指定列分别计算平均值,不管该组有6行还是15行,结果都是组内数据的均值。
  • .reset_index():把原本作为分组索引的sub和window变回普通列,方便后续查看、导出或进一步处理。

示例效果

举个简单例子,假设你的原始数据是这样的:

subwindowmeanstdevrms
S0312.50.83.1
S0313.00.73.2
S0324.11.04.3
S2611.80.52.0

运行代码后得到的结果result_df会是:

subwindowmeanstdevrms
S0312.750.753.15
S0324.11.04.3
S2611.80.52.0

扩展:计算多个统计量

如果之后需要同时计算更多统计量(比如中位数、最大值),可以用.agg()方法灵活配置:

# 同时计算均值和中位数
result_df = df.groupby(['sub', 'window'])[['mean', 'stdev', 'rms']].agg(['mean', 'median']).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:13:11