如何合并变量中的重复项并对对应数值分组求和
按鱼类名称分组聚合总捕获量实现方案
这个需求的核心是按键值分组求和,是结构化数据处理的常规聚合操作,以下是不同工具/语言下的直接可复用实现,对应输入输出完全匹配你给出的示例结构:
Python 实现
方案1:pandas 库(数据处理场景首选)
如果你的二维变量是pandas DataFrame格式(假设变量名为catch_raw,列名保持Column 1/Column 2),单步聚合即可得到结果:
import pandas as pd # 分组求和,as_index=False保证输出仍是普通二维表结构,不会把鱼名设为行索引 catch_sum = catch_raw.groupby("Column 1", as_index=False)["Column 2"].sum()
运行后catch_sum就是无重复鱼名、对应总捕获量的新变量,和你给出的期望输出完全一致。
方案2:Python原生实现(无第三方库依赖)
如果原始数据是嵌套列表/元组格式(比如[("Fish 1", 10), ("Fish 2", 5), ...]),可以用字典累加实现:
catch_sum_dict = {} for fish_name, catch_count in raw_data: # 鱼名第一次出现时初始化计数为0 catch_sum_dict.setdefault(fish_name, 0) catch_sum_dict[fish_name] += catch_count # 转换为和原始结构一致的二维列表 catch_sum = [(name, total) for name, total in catch_sum_dict.items()]
R 实现
方案1:dplyr 语法(生态/统计分析常用)
library(dplyr) catch_sum <- catch_raw %>% group_by(`Column 1`) %>% summarise(`Column 2` = sum(`Column 2`), .groups = "drop")
方案2:base R 实现(无包依赖)
catch_sum <- aggregate(`Column 2` ~ `Column 1`, data = catch_raw, FUN = sum)
桌面表格工具(Excel/WPS)实现
无需写代码,用数据透视表快速完成:
- 选中原始两列数据,点击插入「数据透视表」
- 将
Column 1(鱼类名称)字段拖入「行」区域 - 将
Column 2(捕获数量)字段拖入「值」区域,默认汇总规则即为求和 - 如需固定为普通二维表,选中透视表结果复制,粘贴为值即可
以上任意方法用你给出的示例数据运行,输出结果均为:Fish 1总捕获20、Fish 2总捕获8、Fish 3总捕获1,和预期结果完全匹配。
内容的提问来源于stack exchange,提问作者sf33
相关产品推荐
相关产品推荐

