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

Python如何对CSV多列分别求和求平均值并生成结果列表

实现CSV列求和及平均值计算的代码方案

原代码存在的问题

  • 语法层面:缩进不规范,for循环内的代码、if/else分支的缩进都存在错误,会直接触发语法报错
  • 逻辑层面:仅处理了A列的数值收集,未覆盖剩余列;将求和、求平均的逻辑放在遍历每行的循环内部,存在不必要的重复计算;最终存储结果的变量名不匹配(预定义的是final_list,实际调用的是不存在的data变量)
  • 扩展性差:如果后续CSV的数值列数量变化,需要手动增删对应列的存储列表,维护成本高

可直接运行的实现代码

import csv

# 初始化存储每列总和的列表
col_sums = []
line_count = 0

# 读取CSV文件
with open("file.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f)
    for row in reader:
        # 跳过表头行,同时初始化总和列表长度
        if line_count == 0:
            # 数值列从第二列开始,所以长度是总列数减1
            col_sums = [0] * (len(row) - 1)
            line_count += 1
            continue
        # 累加每列的数值
        for idx in range(1, len(row)):
            col_sums[idx-1] += int(row[idx])
        line_count += 1

# 计算平均值,按需求转成对应格式的字符串
data_row_num = line_count - 1  # 减去表头的1行
final_list = []
for sum_val in col_sums:
    avg = sum_val / data_row_num
    if avg.is_integer():
        final_list.append(str(int(avg)))
    else:
        # 保留三位小数
        final_list.append(f"{avg:.3f}")

# 输出结果和示例完全一致:['2', '3', '2.667', '2.333']
print(final_list)

结果写入CSV的示例

如果需要把最终列表写入新的CSV文件,可以直接调用csv模块实现:

with open("result.csv", "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f)
    # 写入表头
    writer.writerow(["A", "B", "C", "D"])
    # 写入平均值结果
    writer.writerow(final_list)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:30:02