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

如何移除CSV数据集中重复出现在中间的列名

移除CSV中重复的列名行(仅保留首行列名)

问题描述

我有一个由多个CSV文件合并而成的数据集,合并后数据中间重复出现了列名,现在需要移除所有出现在数据集中的重复列名,只保留顶部的一组列名。

当前CSV内容

col1  col2  col3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
col1  col2  col3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3
 1      2     3
col1  col2  col3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
col1  col2  col3
col1  col2  col3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3

期望结果

col1  col2  col3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3
 1      2     3 
 1      2     3

解决方案

方法1:Python脚本处理

用Python读取文件,保留首行列名,过滤掉后续所有和列名一致的行:

input_file = "input.csv"
output_file = "output.csv"

with open(input_file, 'r') as f_in, open(output_file, 'w') as f_out:
    # 读取并写入首行列名
    header = f_in.readline().strip()
    f_out.write(header + '\n')
    
    # 遍历剩余行,仅写入非列名行
    for line in f_in:
        stripped_line = line.strip()
        if stripped_line != header:
            f_out.write(line)

方法2:命令行awk工具处理

如果熟悉Linux/Unix命令行,可直接用awk快速处理:

awk 'NR==1 || $0!=$header' header="$(head -1 input.csv)" input.csv > output.csv
  • NR==1:保留第一行首行列名
  • $0!=$header:后续行内容和首行不一致则保留
  • header="$(head -1 input.csv)":提前获取首行内容作为对比基准

注意事项

  • 若CSV用逗号分隔而非空格,上述代码依然适用,只需确保列名行的匹配逻辑准确
  • 若列名行存在前后空格差异,Python脚本中已通过strip()统一处理后再对比

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 09:20:39