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

如何使用Python按col a拆分值汇总CSV文件的total列数据?

用Python实现CSV多标签的Total求和汇总

需求说明

我有如下格式的CSV文件,需要根据col a列中以逗号分隔的各个值,对total列的数据进行求和汇总。

原CSV数据:

totalcol a
100ca_1,ca_2
200ca_3,ca_2_1
300ca_4,ca_2_1
400ca_2,ca_2_1
500ca_2,ca_2_1

期望输出结果:

totalcol
100ca_1
1000ca_2
200ca_3
1400ca_2_1
300ca_4

方法一:使用Python标准库csv

无需额外安装依赖,适合轻量场景:

import csv
from collections import defaultdict

# 初始化字典存储每个标签的总和
total_sum = defaultdict(int)

# 读取输入CSV
with open('input.csv', 'r', newline='', encoding='utf-8') as infile:
    reader = csv.DictReader(infile)
    for row in reader:
        total = int(row['total'])
        # 拆分多标签并遍历
        for col in row['col a'].split(','):
            total_sum[col.strip()] += total  # 处理标签前后可能的空格

# 写入结果CSV
with open('output.csv', 'w', newline='', encoding='utf-8') as outfile:
    writer = csv.DictWriter(outfile, fieldnames=['total', 'col'])
    writer.writeheader()
    for col, sum_total in total_sum.items():
        writer.writerow({'total': sum_total, 'col': col})

关键说明

  • 用defaultdict(int)自动初始化每个标签的总和为0,避免键不存在的报错
  • split(',')拆分多标签,strip()兼容带空格的标签格式(比如ca_1, ca_2)
  • 最终将汇总结果写入新CSV文件

方法二:使用pandas库(简洁高效)

如果处理大规模数据,pandas的向量化操作更高效,先安装依赖:

pip install pandas

实现代码:

import pandas as pd

# 读取CSV文件
df = pd.read_csv('input.csv')

# 将多标签行拆分为单行,保留对应total值
df_expanded = df.assign(col=df['col a'].str.split(',')).explode('col')
# 清理标签前后的空格
df_expanded['col'] = df_expanded['col'].str.strip()

# 按标签分组求和
result = df_expanded.groupby('col', as_index=False)['total'].sum()

# 保存结果到CSV
result.to_csv('output.csv', index=False)

关键说明

  • assign() + explode()快速拆分多标签行,实现一行转多行
  • groupby() + sum()一键完成分组求和,代码更简洁
  • 适合处理十万行以上的大规模CSV数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 12:55:27