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

使用Python 3.9按前三列值合并文本行并求和的需求

Python 3.9 实现按前三列合并行并求和后两列

需求说明

给定一个带固定空格分隔的类CSV文本文件,需要合并前三列值完全相同的行,把这些行的heading4和heading5列数值分别求和,最终保留唯一行并输出为新文件。

输入示例

heading1,  heading2,    heading3,   heading4,   heading5,
10,        15,          20,         30,         40
10,        14,          20,         20,         39
10,        15,          20,         10,         29
9,         3,           13,         12,         13
10,        14,          20,          2,          3
10,        15,          20,          10,        10 

输出示例

heading1,  heading2,    heading3,   heading4,   heading5,
10,        15,          20,         50,         79
10,        14,          20,         22,         42
9,         3,           13,         12,         13

实现代码

from collections import defaultdict

# 替换成你的输入输出文件路径
input_path = "input.txt"
output_path = "output.txt"

# 用字典存分组结果:键是前三列的组合,值是[heading4总和, heading5总和]
sum_groups = defaultdict(lambda: [0, 0])

with open(input_path, 'r', encoding='utf-8') as infile:
    # 先读取表头,直接保留原格式
    header_line = infile.readline()
    # 处理每一行数据
    for line in infile:
        stripped_line = line.strip()
        if not stripped_line:
            continue
        # 按逗号拆分字段,同时去掉每个字段的多余空格
        fields = [field.strip() for field in stripped_line.split(',')]
        # 前三列作为分组的唯一标识(元组可哈希,能当字典键)
        group_key = (fields[0], fields[1], fields[2])
        # 累加后两列的数值
        sum_groups[group_key][0] += int(fields[3])
        sum_groups[group_key][1] += int(fields[4])

# 写入结果到输出文件
with open(output_path, 'w', encoding='utf-8') as outfile:
    # 先写表头
    outfile.write(header_line)
    # 按原格式拼接每行内容并写入
    for key, totals in sum_groups.items():
        # 严格匹配原文件的空格排版
        result_line = f"{key[0]},        {key[1]},          {key[2]},         {totals[0]},         {totals[1]}\n"
        outfile.write(result_line)

代码说明

  • 用defaultdict是为了简化分组逻辑,不用每次判断当前前三列组合是否已经存在,直接就能初始化累加值。
  • 表头单独读取并原样写入,保证输出的表头和输入完全一致。
  • 每行数据拆分后先去掉字段的多余空格,避免空格影响分组判断,后两列转成整数进行累加。
  • 写入结果时特意按照原文件的空格格式拼接,确保输出排版和输入一致,不会出现格式混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:40:45