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

在导入CSV时用Pandas合并重复列标题对应单元格求和

合并CSV重复列并按列名求和的实现方案

Pandas(Python)方案

适合熟悉Python/Pandas的场景,处理中等至大规模数据,内存足够时效率很高。

import pandas as pd

# 读取空格分隔的CSV文件,保留原始重复列名(check.names=False禁止自动重命名)
df = pd.read_csv('your_data.csv', sep='\s+', header=0, check.names=False)
# 按列名分组,对每一组的列求和(axis=1表示按列方向分组)
merged_df = df.groupby(df.columns, axis=1).sum()

# 输出结果
print(merged_df)

说明:check.names=False是关键,避免Pandas将重复列名重命名为A.1、A.2;groupby(axis=1)按列名聚合求和,对于千列百万行的数据集,Pandas内部优化的运算效率足够应对,若内存不足可结合chunksize分块读取处理。

Bash(Awk)方案

适合超大规模流式处理,无需加载整个文件到内存,内存占用极低,适合百万行级别的超大文件。

awk '
NR==1 {
    # 第一行:记录每个列名对应的所有列索引
    for (i=1; i<=NF; i++) {
        col_indices[$i] = col_indices[$i] " " i
    }
    # 输出去重后的列名
    for (col in col_indices) {
        printf "%s ", col
    }
    print ""
    next
}
{
    # 初始化当前行各列的求和为0
    delete row_sums
    for (col in col_indices) {
        row_sums[col] = 0
    }
    # 遍历每个列名对应的索引,累加数值
    for (col in col_indices) {
        split(col_indices[col], indices, " ")
        for (idx in indices) {
            row_sums[col] += $indices[idx]
        }
    }
    # 输出当前行的求和结果
    for (col in col_indices) {
        printf "%d ", row_sums[col]
    }
    print ""
}
' your_data.csv | column -t

说明:Awk逐行处理文件,第一行解析列名与索引映射,后续每行根据映射求和,column -t用于格式化输出对齐,整个过程内存占用仅为当前行数据,完全适配百万行千列的超大文件。

R(Data.table)方案

适合R用户处理大规模数据,data.table的fread读取速度远快于基础R的read.table,内存效率更高。

library(data.table)

# 读取空格分隔的CSV,保留原始列名(check.names=FALSE)
dt <- fread("your_data.csv", header = TRUE, sep = " ", check.names = FALSE)

# 转置后按列名分组求和,再转置回原结构
dt_transposed <- transpose(dt)
dt_transposed[, group := rownames(dt_transposed)]
dt_summed <- dt_transposed[, lapply(.SD, sum), by = group]
merged_dt <- transpose(dt_summed[, -1], make.names = dt_summed$group)

# 输出结果
print(merged_dt)

说明:转置后分组求和是处理重复列的高效方式,data.table的聚合操作针对大规模数据做了优化,千列百万行的数据集处理效率优于基础R的dplyr方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 11:05:15