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

如何在Pandas DataFrame中按两列分组计算均值并生成新列?

Pandas按多列分组计算均值并添加新列

核心解决方案

要实现按两列分组计算第三列的均值并添加为新列,使用groupby结合transform方法是最直接的方式——transform会将分组聚合后的均值广播到原DataFrame的每一行,完美匹配索引。

示例实现

首先定义示例DataFrame:

import pandas as pd

data = [
    {'x':0.0, 'y':0.0, 'z':0.8},
    {'x':0.0, 'y':0.0, 'z':1.0},
    {'x':0.0, 'y':0.0, 'z':1.2},
    {'x':1.0, 'y':1.0, 'z':1.6},
    {'x':1.0, 'y':1.0, 'z':2.0},
    {'x':1.0, 'y':1.0, 'z':2.4},
]
df = pd.DataFrame(data)

执行分组计算并添加新列:

# 按x、y分组,计算z列的均值,存入z_mean新列
df['z_mean'] = df.groupby(['x', 'y'])['z'].transform('mean')

输出结果

运行后得到的DataFrame如下:

x    y    z  z_mean
0  0.0  0.0  0.8     1.0
1  0.0  0.0  1.0     1.0
2  0.0  0.0  1.2     1.0
3  1.0  1.0  1.6     2.0
4  1.0  1.0  2.0     2.0
5  1.0  1.0  2.4     2.0

关键说明

  • groupby(['x', 'y']):指定分组依据为x和y两列,确保相同x、y组合的行被归为同一组
  • transform('mean'):对每个组的z列计算均值,与直接使用mean()不同,transform会保留原DataFrame的行数,将均值填充到对应组的每一行中
  • 直接赋值给df['z_mean']即可完成新列的创建

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 18:31:02