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

Pandas groupby场景下高效计算每组第n行均值的方案问询

问题核心

你现有代码效率低的核心原因是循环90次重复执行groupby操作,产生了大量不必要的计算开销,仅需1~2次groupby即可完成需求,具体实现分两种场景:

场景1:现有Idx列即为组内位置标识(与你需要的第N行完全对应)

这是效率最高的实现,仅需两次操作:

# 按Idx分组计算Value均值,重命名为Mean
idx_mean = df.groupby('Idx')['Value'].mean().rename('Mean')
# 把均值合并回原表
df = df.merge(idx_mean, on='Idx', how='left')

场景2:需要严格按组内行的实际顺序计算(不依赖Idx列的值)

先给每个组生成内部行号,再按行号计算均值合并:

# 生成组内从0开始的行序号,和你原代码nth(n)的入参逻辑完全一致
df['inner_idx'] = df.groupby('GroupID').cumcount()
# 按内部序号计算均值
inner_mean = df.groupby('inner_idx')['Value'].mean().rename('Mean')
# 合并回原表,不需要inner_idx可以后续drop掉
df = df.merge(inner_mean, on='inner_idx', how='left').drop(columns='inner_idx')

以上两种方案都避免了循环重复计算groupby,在数据量较大的场景下效率会比原有实现提升数十倍以上。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:00:03