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

如何按DataFrame中Class1与Class2配对分组计算Score列的行组平均值

解决方案

你可以直接使用Pandas自带的groupby分组聚合功能实现需求,不需要手动拆分多个子表,不管有多少组配对都可以自动批量计算,示例代码如下:

import pandas as pd

# 实际使用时替换为你自己的DataFrame读取代码,比如pd.read_excel()、pd.read_csv()
# 下面是构造示例数据的代码,仅用于测试
df = pd.DataFrame({
    'Class1': ['a1','a1','a1','a1','a2','a2','a3','a3','a3','a3','a4','a4'],
    'Class2': ['a2','a2','a2','a3','a3','a3','a4','a4','a5','a5','a5','a5'],
    'Exam': ['a','b','c','c','c','d','e','f','e','f','e','f'],
    'Score1': [0.9,0.8,0.1,0.1,0.7,0.3,1.0,0.0,1.0,0.0,0.8,0.7],
    'Score2': [0.7,0.7,0.7,0.2,0.2,0.1,0.8,0.7,0.9,0.9,0.9,0.9]
})

# 核心分组聚合逻辑
res_df = df.groupby(
    # 指定按Class1、Class2两列的组合作为分组依据
    by=['Class1', 'Class2'],
    # 设为False避免分组键变成行索引,保持为普通列更符合输出要求
    as_index=False
).agg(
    # 分别对两列算均值,同时指定聚合后的列名
    Average1=('Score1', 'mean'),
    Average2=('Score2', 'mean')
# 保留两位小数,和你给出的期望输出格式一致
).round(2)

print(res_df)

运行上述代码输出的结果和你期望的格式完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 04:15:04