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

按变量类别汇总两个DataFrame数值至新DataFrame的实现问题

按变量类别对DataFrame数值求和的解决方案

别着急,我来帮你搞定这个问题!用Pandas可以轻松实现按类别对数值观测进行分组求和,下面我用示例代码一步步拆解:

1. 先模拟你的两个DataFrame

首先我们先创建和你需求匹配的示例数据,方便你对照理解:

import pandas as pd

# 第一个DataFrame:包含变量的数值观测(4行,对应你要的4行结果)
df_values = pd.DataFrame({
    'var_a': [12, 24, 36, 48],
    'var_b': [7, 14, 21, 28],
    'var_c': [9, 18, 27, 36],
    'var_d': [5, 10, 15, 20]
})

# 第二个DataFrame:定义每个变量对应的类别
df_categories = pd.DataFrame({
    'category': ['red', 'blue', 'red', 'green']
}, index=['var_a', 'var_b', 'var_c', 'var_d'])

2. 核心:按类别分组求和

只需要一行关键代码,就能完成按类别对每行数值求和的操作:

# 按列的类别分组,逐行求和
df_result = df_values.groupby(df_categories['category'], axis=1).sum()

# (可选)如果需要固定列的顺序为red、blue、green,可手动指定
df_result = df_result[['red', 'blue', 'green']]

3. 查看结果

运行后df_result就是你要的新DataFrame:

red  blue  green
0   21     7      5
1   42    14     10
2   63    21     15
3   84    28     20

原理说明

  • groupby(df_categories['category'], axis=1):指定按列的类别进行分组(axis=1代表列维度),这里用df_categories的category列作为分组依据,它的索引正好和df_values的列名一一对应,完美匹配变量和类别的映射关系。
  • .sum():对每个类别下的所有列,逐行计算总和,自动生成以类别名为列的新DataFrame。

如果你的实际数据结构和示例略有不同(比如类别映射不是以变量名为索引),只需要先调整一下映射关系,确保分组依据能和数值DataFrame的列名对应上就行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:45:50