如何按列A的取值分组计算对应行的列B求和结果
按列分组求和的实现方案
没问题,这就是个很常见的分组聚合需求,针对你给出的示例数据,我给你几种不同工具下的实现方法,你可以根据自己的使用场景选择:
示例输入数据
| a | b |
|---|---|
| 1 | 1 |
| 3 | 4 |
| 2 | 6 |
| 3 | 8 |
| 1 | 9 |
期望输出结果
| a | sum |
|---|---|
| 1 | 10 |
| 2 | 6 |
| 3 | 12 |
Excel 实现方式
方法1:使用SUMIF函数
在空白列(比如D列)列出所有不重复的a值,然后在E列对应单元格输入求和公式:
=SUMIF($A$2:$A$6, D2, $B$2:$B$6)
拖拽填充公式就能得到每个a对应的b列求和结果。
方法2:数据透视表(更高效)
- 选中整个数据区域(包括表头)
- 点击菜单栏的「插入」→「数据透视表」
- 在弹出的面板中,把
a字段拖到「行」区域,把b字段拖到「值」区域 - 默认值字段可能是计数,右键点击值区域的字段,选择「值字段设置」→ 改成「求和」
- 最后调整一下列名,就能得到和期望一致的结果。
Python Pandas 实现方式
如果你用Python处理数据,Pandas库可以轻松搞定:
import pandas as pd # 构造你的示例数据 df = pd.DataFrame({ 'a': [1, 3, 2, 3, 1], 'b': [1, 4, 6, 8, 9] }) # 按a分组,对b求和,然后重置索引变成表格形式 result_df = df.groupby('a')['b'].sum().reset_index() # 把列名改成你需要的sum result_df.rename(columns={'b': 'sum'}, inplace=True) print(result_df)
运行这段代码后,输出的DataFrame就是你要的分组求和表。
SQL 实现方式
如果数据存在数据库里,用SQL语句直接查询即可(假设表名为your_table):
SELECT a, SUM(b) AS sum FROM your_table GROUP BY a ORDER BY a;
执行这条语句会直接返回按a分组后的求和结果,ORDER BY a是为了让结果按a的升序排列,和你的示例一致。
如果是用其他工具(比如R、Power Query)处理,你可以补充说明,我再给你对应方案~
内容的提问来源于stack exchange,提问作者namu
相关产品推荐
相关产品推荐

