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

禁止使用Pandas扩展:基础Python按用户名汇总CSV分数方法

解决按Username分组汇总分数的问题

嘿,我来帮你搞定这个按用户名汇总分数的需求!你原来的代码只是把所有行的分数加起来得到了一个全局总和,没有按用户分组统计,我们只需要用一个字典来跟踪每个用户的累计总分就能完美解决啦。

核心思路

  • 用字典user_totals来存储每个用户名对应的累计总分,键是用户名,值是该用户的总分,这样能方便地按用户分组累加。
  • 遍历每一行时,先计算当前行的Auto Score与Manual Score之和,再把这个值加到对应用户名的累计总分里。
  • 最后把字典中的结果写入新CSV文件,就能得到你想要的按用户汇总的输出。

完整代码实现

import csv

# 初始化字典,用于存储每个用户的累计总分
user_totals = {}

# 读取原始CSV文件
with open("exam_for_2019.csv") as csvfile:
    reader = csv.DictReader(csvfile)
    for row in reader:
        # 处理空分数的情况:空值转为0.0,避免报错
        auto_score = float(row['Auto Score'].strip()) if row['Auto Score'].strip() else 0.0
        manual_score = float(row['Manual Score'].strip()) if row['Manual Score'].strip() else 0.0
        
        # 计算当前行的分数总和
        row_sum = auto_score + manual_score
        
        # 更新对应用户的累计总分
        username = row['Username']
        if username in user_totals:
            user_totals[username] += row_sum
        else:
            user_totals[username] = row_sum

# 将汇总结果写入新的CSV文件
with open("total_scores.csv", "w", newline='') as outfile:
    writer = csv.writer(outfile)
    # 写入表头
    writer.writerow(['Username', 'Total Score'])
    # 遍历字典,写入每个用户的总分
    for username, total in user_totals.items():
        writer.writerow([username, total])

# 可选:打印结果验证
for username, total in user_totals.items():
    print(f"{username} {total}")

关键细节说明

  • 字典分组逻辑:user_totals是实现分组的核心,它能自动帮我们区分不同用户的分数,避免混淆。
  • 空值处理:保留了你原来的逻辑,把空的分数字段转为0.0,确保不会因为空值引发类型转换错误。
  • 输出CSV:生成的total_scores.csv完全符合你期望的格式,表头和每行的用户名、总分一一对应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:03:40