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

如何用Python统计CSV中指定列重复值分组的Value总和?

解决方案

以下是实现需求的完整代码,支持单个字母查询和所有字母汇总:

import csv

def calculate_alphabet_sum(csv_path, target_alphabet=None):
    # 初始化字典存储每个字母的总和
    sum_dict = {}
    
    with open(csv_path) as alphabetical_list_file:
        csv_reader = csv.reader(alphabetical_list_file, delimiter=',')
        # 跳过表头行
        next(csv_reader)
        
        for row in csv_reader:
            alphabet = row[0].strip()
            # 将Value转为整数,避免字符串拼接错误
            value = int(row[2].strip())
            
            # 累加对应字母的总和
            if alphabet in sum_dict:
                sum_dict[alphabet] += value
            else:
                sum_dict[alphabet] = value
    
    # 处理查询逻辑
    if target_alphabet is not None:
        target_alphabet = target_alphabet.strip().upper()
        # 返回对应字母的总和,不存在则返回0
        return sum_dict.get(target_alphabet, 0)
    else:
        # 返回所有字母的汇总列表
        return [f"{k}: {v}" for k, v in sum_dict.items()]

# 使用示例
csv_file_path = "/Users/name/Desktop/path/alphabetical_list.csv"
# 查询字母A
print(calculate_alphabet_sum(csv_file_path, "A"))  # 输出3
# 查询字母D
print(calculate_alphabet_sum(csv_file_path, "D"))  # 输出7
# 查询所有字母
print(calculate_alphabet_sum(csv_file_path))  # 输出['A: 3', 'D: 7']

代码说明

  • 数据读取与累加:先用next(csv_reader)跳过表头行,遍历每一行时提取Alphabet列(索引0)和Value列(索引2),将Value转为整数后,用字典sum_dict累加每个字母的总和。
  • 查询逻辑:
    • 传入target_alphabet参数时,返回对应字母的总和(自动处理大小写、去除首尾空格),如果字母不存在则返回0。
    • 不传入该参数时,返回格式化后的汇总列表,格式为['字母: 总和', ...]。
  • 鲁棒性处理:通过strip()处理单元格可能存在的空格,int()确保数值正确累加,get()方法避免键不存在时抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:45:30