数据集不同类型求和需求(Distinct sum of a dataset)
按TYPE分组求和的实现方法
1. Linux/Unix环境下用AWK命令
直接通过AWK处理文本,一行命令就能搞定:
awk 'NR==1{print;next} {sum[$1]+=$2} END{for(k in sum) print k, sum[k]}' your_data.txt
- 保留第一行表头,然后以
TYPE为键累加count值,最后遍历输出分组后的总和。
如果要直接处理给定的输入内容,可通过管道传递:
cat << EOF | awk 'NR==1{print;next} {sum[$1]+=$2} END{for(k in sum) print k, sum[k]}' TYPE count TYPE1 50 TYPE2 20 TYPE1 10 TYPE2 30 EOF
2. Python实现
基础字典方式(无需额外依赖)
data = """TYPE count TYPE1 50 TYPE2 20 TYPE1 10 TYPE2 30""" lines = data.splitlines() sum_dict = {} print(lines[0]) # 打印表头 for line in lines[1:]: typ, cnt = line.split() sum_dict[typ] = sum_dict.get(typ, 0) + int(cnt) for typ, total in sum_dict.items(): print(f"{typ} {total}")
Pandas库方式(适合大规模数据)
import pandas as pd # 构建数据框 df = pd.DataFrame([ ["TYPE1", 50], ["TYPE2", 20], ["TYPE1", 10], ["TYPE2", 30] ], columns=["TYPE", "count"]) # 分组求和并输出 result = df.groupby("TYPE")["count"].sum().reset_index() print(result.to_string(index=False))
3. Excel/Google Sheets操作步骤
- 将数据粘贴到表格,A列存
TYPE,B列存count - 在空白列(比如C列)列出所有唯一的
TYPE值(可通过「数据→删除重复值」提取) - 在D2单元格输入公式
=SUMIF(A:A, C2, B:B),下拉填充即可得到对应TYPE的总和
内容的提问来源于stack exchange,提问作者Nabs335
相关产品推荐
相关产品推荐

