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

使用Bash合并同名行并汇总全列数据的技术求助

没问题!我帮你搞定这个多列汇总的需求,下面给你两种靠谱的方案,不管你习惯用Python还是命令行都能完美解决:

方案1:用Python Pandas处理(适合数据分析师/开发者)

Pandas是处理这类表格数据的神器,能自动识别所有数值列并完成分组汇总,完全不用手动遍历每一列:

  1. 先确保你安装了Pandas:
pip install pandas
  1. 运行以下代码(根据你的文件格式调整参数):
import pandas as pd

# 读取文件:如果是CSV用read_csv,制表符分隔用read_table,按需修改sep参数
df = pd.read_csv("your_input_file.csv")

# 按名称列分组(把'name'改成你实际的名称列标题),对所有列求和
# 如果你需要其他汇总方式(比如均值、最大值),把sum()换成mean()/max()即可
summary_df = df.groupby("name").sum().reset_index()

# 保存汇总结果到新文件
summary_df.to_csv("summary_result.csv", index=False)

这段代码会自动处理所有52列,不管列数多少都能轻松应对,分组后会把每个名称对应的所有列数值全部汇总。

方案2:用Awk命令行处理(适合快速批量处理)

如果你不想写代码,用Awk命令行工具也能实现,适合在服务器或终端里快速处理:

假设你的文件是制表符分隔、名称在第一列(如果名称在其他列,把$1改成对应列号即可),运行以下命令:

awk -F'\t' '{
    # 遍历从第2列到最后一列,累加每个名称对应列的数值
    for (i=2; i<=NF; i++) {
        sum[$1, i] += $i
    }
}
BEGIN {
    # 读取并输出表头
    getline header < ARGV[1]
    print header
}
END {
    # 遍历每个名称,输出汇总结果
    for (name in sum) {
        split(name, key, SUBSEP)
        if (!printed[key[1]]) {
            printf "%s", key[1]
            for (i=2; i<=NF; i++) {
                printf "\t%s", sum[key[1], i]
            }
            printf "\n"
            printed[key[1]] = 1
        }
    }
}' your_input_file.txt > summary_result.txt

如果你的文件是逗号分隔,把-F'\t'改成-F','就行;如果名称不在第一列,比如在第3列,把所有$1替换成$3即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:10:04