「每人这一周合计多少?」——8 行脚本算出全员的行汇总排行榜

2026-10-03 · 喵窝资源铺

和「按列分组汇总」(上一篇)正好相反的另一种高频需求:对每一行求和。典型场景:考勤表有「姓名 + 周一到周五每天工时」,要算每人一周总工时;业绩表有「姓名 + 各产品销售额」,要算每人总业绩。Excel 里要么一列列加、要么写数组公式,人员一多就乱。这篇给一个 8 行、零依赖 的脚本:自动跳过非数字列,对每行求和,按合计降序输出排行榜。本文代码实跑验证。

完整脚本

存为 row_sum.py,用法:python row_sum.py 考勤表.csv。第一列自动当名字,其余能转成数字的列全加起来:

"""对 CSV 每行求和(跳过非数字列),按合计降序输出。
用法:python row_sum.py 文件.csv"""
import sys, csv

rows_out = []
with open(sys.argv[1], newline="", encoding="utf-8-sig") as f:
    reader = csv.reader(f)
    header = next(reader)  # 跳过表头
    for r in reader:
        name, nums = r[0], r[1:]
        total = sum(float(x.replace(",", "")) for x in nums if x.strip())
        rows_out.append((name, total))
for name, total in sorted(rows_out, key=lambda t: -t[1]):
    print(f"{name},{total:g}")
print(f"-- 共 {len(rows_out)} 人,已按合计降序", file=sys.stderr)

思路:第一列当名字,其余列凡是 strip() 之后能转成数字的都加起来;全部行收进列表后一次性按合计降序输出——排行榜直接就是 stdout。统计行走 stderr,重定向不会污染结果文件。

实跑结果

造了 2 人 6 天考勤数据跑 python row_sum.py 考勤.csv:

张三,11
李四,7
-- 共 2 人,已按合计降序

核对:张三 3+2+1+5+0+0=11 正确,李四 5+0+2=7 正确,降序正确。结果直接就是排行榜,重定向 > 周报.csv 就能贴进汇报邮件。

三个容易踩的坑(都是真踩过的)

一行一个人、要按周/月分档、还要出占比——这种需求一分钟说清楚,我们直接给你写好测好。
懒得自己改?找我们代写
喵窝资源铺提供 Python 脚本代写服务:你说清楚表格长什么样、要算什么,我们写好脚本、用你的真实数据测试通过再交付,24 小时内出活。AI 服务,明码标价,先看效果再付款(虚拟物品不退款,不满意免费重做)。
👉 了解代写服务 | 联系我们

相关阅读:按列分组汇总计数/求和 | 合并后按关键列去重留最新 | 两份流水账自动对账 | 多 CSV 合并去重