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

如何用Pandas实现分组列的逐行累积均值计算?

自动化生成分组列的逐行累积均值方法

问题场景

有如下Pandas数据集,列分为a和b两组,每组包含4个序列列:

import pandas as pd

data = [[1, 4, 6, 10, 15, 40, 90, 100], [2, 5, 3, 11, 25, 50, 90, 120], [3, 7, 9, 14, 35, 55, 100, 120]]
df = pd.DataFrame(data, columns=['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4'])

数据集预览:

a1  a2  a3  a4  b1  b2   b3   b4
0   1   4   6  10  15  40   90  100
1   2   5   3  11  25  50   90  120
2   3   7   9  14  35  55  100  120

需要为每组生成逐行累积均值列:

  • 对a组:生成a1_2(a1+a2的均值)、a1_3(a1+a2+a3的均值)、a1_4(a1到a4的均值)
  • 对b组:生成b1_2、b1_3、b1_4,规则同上

手动逐个计算效率低下,需要自动化实现方式。

自动化实现方案

可以通过分组处理+累积计算批量生成目标列,具体代码如下:

import pandas as pd

data = [[1, 4, 6, 10, 15, 40, 90, 100], [2, 5, 3, 11, 25, 50, 90, 120], [3, 7, 9, 14, 35, 55, 100, 120]]
df = pd.DataFrame(data, columns=['a1', 'a2', 'a3', 'a4', 'b1', 'b2', 'b3', 'b4'])

# 提取列名前缀作为分组标识
groups = df.columns.str.extract('([ab])', expand=False).unique()

for group in groups:
    # 获取当前组的所有列,并按序号排序
    group_cols = sorted([col for col in df.columns if col.startswith(group)], key=lambda x: int(x[1:]))
    # 计算逐行累积和,再除以对应累积列数得到均值
    cumulative_means = df[group_cols].cumsum(axis=1) / range(1, len(group_cols)+1)
    # 重命名列以匹配需求格式
    cumulative_means.columns = [f"{group}1_{i}" for i in range(2, len(group_cols)+1)]
    # 将新列合并到原DataFrame
    df = pd.concat([df, cumulative_means], axis=1)

print(df)

运行后输出结果:

a1  a2  a3  a4  b1  b2   b3   b4  a1_2      a1_3  a1_4  b1_2       b1_3   b1_4
0   1   4   6  10  15  40   90  100   2.5  3.666667  5.25  27.5  48.333333  61.25
1   2   5   3  11  25  50   90  120   3.5  3.333333  5.25  37.5  55.000000  71.25
2   3   7   9  14  35  55  100  120   5.0  6.333333  8.25  45.0  63.333333  77.50

代码说明

  • df.columns.str.extract('([ab])', expand=False).unique():提取列名的前缀分组标识(此处为a和b)
  • sorted(..., key=lambda x: int(x[1:])):确保组内列按序号从小到大排列,避免列名乱序导致计算错误
  • cumsum(axis=1):按行计算累积和,再除以range(1, len(group_cols)+1)直接得到逐行累积均值
  • pd.concat:将新生成的累积均值列合并到原DataFrame,完成批量处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 20:25:30