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

使用Pandas按多条件组合计算DataFrame列的平均值

用Pandas按指定条件分组计算平均值的高效方法

原始DataFrame如下:

COND1COND2COND3COND4ABC
11111000.344
1122500.255
12112001.591
1222-501.818
211130-0.552
2122-850.184
2211420.0144
222286-0.418

需求是按以下四种COND1与COND2的组合,分别计算A、B、C列的平均值:

  • COND1=1 且 COND2=1
  • COND1=1 且 COND2=2
  • COND1=2 且 COND2=1
  • COND1=2 且 COND2=2

已知Excel筛选可以实现,想知道用Python Pandas有没有更高效的方法。


解决方案:使用groupby分组聚合

Pandas里用groupby方法可以一次性完成所有分组的平均值计算,比手动逐个筛选高效太多,步骤如下:

1. 准备数据

如果你的数据是从文件(比如Excel、CSV)读取的,直接用pd.read_excel()或pd.read_csv()导入即可;如果是手动构造,代码如下:

import pandas as pd

data = {
    'COND1': [1,1,1,1,2,2,2,2],
    'COND2': [1,1,2,2,1,1,2,2],
    'COND3': [1,2,1,2,1,2,1,2],
    'COND4': [1,2,1,2,1,2,1,2],
    'A': [100,50,200,-50,30,-85,42,86],
    'B': [0.3,0.2,1.5,1.8,-0.5,0.1,0.01,-0.4],
    'C': [44,55,91,18,52,84,44,18]
}
df = pd.DataFrame(data)

2. 分组计算平均值

一行代码就能得到所有组合的结果:

# 按COND1和COND2分组,仅计算A、B、C列的平均值
result = df.groupby(['COND1', 'COND2'])[['A', 'B', 'C']].mean().reset_index()

3. 查看结果

打印result会得到:

COND1COND2ABC
1175.00.2549.5
1275.01.6554.5
21-27.5-0.268.0
2264.0-0.19531.0

正好对应你需要的四个条件组合,无需手动逐个筛选。

单独提取特定组合

如果只需要某一个组合的结果,比如COND1=1且COND2=1,直接用loc筛选:

target = result.loc[(result['COND1'] == 1) & (result['COND2'] == 1)]
print(target)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:45:40