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

按第一列分组对第三列求和并生成指定格式TXT文件的实现问题

问题解决方法

报错原因

你使用np.loadtxt直接读取文件报错是因为输入文件中包含>>>>>格式的非数值分隔行,numpy默认会尝试将所有行解析为数值,就会触发格式错误。

实现方案

方案1:纯Python实现(无需额外依赖)

无需安装numpy、pandas等第三方库,直接用Python内置功能处理:

from collections import defaultdict

# 用字典存储第一列对应的第三列累加值
col_sum = defaultdict(float)

with open("input.txt", "r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        # 过滤空行和分隔符行
        if not line or line.startswith(">>>>>"):
            continue
        cols = line.split()
        first_col = float(cols[0])
        third_col = float(cols[2])
        col_sum[first_col] += third_col

# 按第一列升序排序后写入输出文件
with open("output.txt", "w", encoding="utf-8") as f:
    for key in sorted(col_sum.keys()):
        # 按要求格式写入,保留一位小数
        f.write(f"{key:.1f} {col_sum[key]:.1f} 1.0\n")

方案2:Pandas实现(适合后续有其他数据处理需求)

如果已经安装了pandas,可以用分组聚合功能快速实现:

import pandas as pd

valid_data = []
with open("input.txt", "r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        if line and not line.startswith(">>>>>"):
            parts = list(map(float, line.split()))
            # 仅保留需要的第一列和第三列
            valid_data.append((parts[0], parts[2]))

# 构造DataFrame并分组求和
df = pd.DataFrame(valid_data, columns=["key", "value"])
res = df.groupby("key", as_index=False)["value"].sum()
# 新增固定值为1.0的列
res["fixed"] = 1.0
# 写入文件,不输出表头和索引,空格分隔
res.to_csv("output.txt", sep=" ", header=False, index=False, float_format="%.1f")

两种方案运行后生成的output.txt内容都会完全符合你给出的预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 22:09:03