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

基于元数据DataFrame的分组列对目标DataFrame列按组求均值

解决方案:基于元数据分组对目标DataFrame列求均值

我来帮你搞定这个问题,用Python的pandas库就能轻松实现,不管你的分组是6个还是3个列,这个方法都通用。我先给你用示例数据演示完整流程:

1. 先构造示例数据

首先我们先把你描述的两个DataFrame用代码造出来,方便你直接运行测试:

import pandas as pd

# 元数据DataFrame(对应你说的主矩阵元数据)
df_meta = pd.DataFrame({
    'col1': ['A1', 'A2', 'A3', 'A4', 'A5'],  # 对应你说的[,1]列
    'col2': ['D1', 'D1', 'D3', 'D3', 'D3'],  # 分组变量列[,2]
    'col3': ['name1', 'name2', 'name3', 'name4', 'name5']
})

# 目标数值DataFrame,列名和df_meta的col1一一对应
df_values = pd.DataFrame({
    'A1': [10, 15, 12],
    'A2': [20, 25, 22],
    'A3': [30, 35, 32],
    'A4': [40, 45, 42],
    'A5': [50, 55, 52]
})

2. 核心实现步骤

我们需要先建立列名到分组的映射关系,然后用这个映射对目标DataFrame的列分组求均值:

# 第一步:构建列名 -> 分组的映射(从元数据中提取)
col_to_group = df_meta.set_index('col1')['col2']

# 第二步:按分组对目标DataFrame的列进行聚合求均值
# axis=1表示按列分组,mean()计算每组列的行均值
grouped_row_means = df_values.groupby(col_to_group, axis=1).mean()

运行完这段代码后,grouped_row_means就是你要的结果:

D1D3
015.040.0
120.045.0
217.042.0

3. 拓展:如果需要每个分组的整体均值

如果你想要的不是每行的分组均值,而是每个分组下所有列的整体数值均值(比如D1组所有列的所有数值的平均值),可以再套一层mean():

grouped_overall_means = df_values.groupby(col_to_group, axis=1).mean().mean()

结果会是:

D1    17.333333
D3    42.333333
dtype: float64

为什么这个方法适用?

这个方法完全兼容你提到的“一组有6个重复项,其余组为3个”的情况——不管每个分组包含多少列,groupby都会自动把同一分组的列归到一起计算均值,不需要手动处理分组大小差异。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:57:42