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

Python实现聚合数据旁显示计数(不使用Pandas)

解决方案

要实现按Date和Tag分组求和并统计每组记录数,我们可以调整数据存储结构,让每个分组键(日期+标签)对应一个包含金额总和和记录计数的字典。下面是修改后的完整代码:

from collections import defaultdict
import csv

# 用元组(date, tag)作为唯一键,对应的值存储总和与计数
d = defaultdict(lambda: {'sum_amount': 0, 'count': 0})

# 假设z是CSV数据的行迭代器(比如文件对象或字符串列表)
for line in z:
    tokens = [t.strip() for t in line.split(",")]
    try:
        date = tokens[0]
        tag = tokens[1]
        amount = int(tokens[2])
    except (ValueError, IndexError) as e:  # 补充处理列数不足的情况
        continue
    # 更新当前分组的统计值
    key = (date, tag)
    d[key]['sum_amount'] += amount
    d[key]['count'] += 1

# 构建符合要求的输出内容,包含表头
output_lines = ['Date,Tag,Amount,Count']
for (date, tag), stats in d.items():
    output_lines.append(f"{date},{tag},{stats['sum_amount']},{stats['count']}")

# 写入结果文件
with open('output.txt', 'w') as f:
    f.write('\n'.join(output_lines))

关键改动说明:

  1. 数据结构优化:把原来的两层嵌套defaultdict改成用(date, tag)元组作为唯一分组键,对应的值是一个字典,同时存储金额总和与记录计数,这样能一次性跟踪两个统计维度。
  2. 遍历逻辑调整:每读取一条有效记录,就找到对应的分组键,同时完成金额累加和计数递增。
  3. 输出格式规范:添加了你需要的表头,并且用标准CSV逗号分隔格式输出(原代码用空格分隔,现在更符合CSV文件的通用格式)。
  4. 异常处理增强:新增IndexError捕获,避免因CSV行列数不足导致程序崩溃。

运行这段代码后,output.txt的内容就会完全匹配你期望的结果啦。

内容的提问来源于stack exchange,提问作者R.Dave

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 09:11:49