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

如何用Node.js去除CSV文件中忽略最后一列的重复行(保留后项)

处理200万行CSV去重:保留重复项的最后一次出现

针对你200万行CSV的去重需求(按除最后一列外的列判断重复,删除首次出现的重复行、保留末次),推荐以下两种高效实现方案:

方案一:用awk命令行工具(首选,内存占用低、速度快)

awk是Unix/Linux系统自带的文本处理工具,处理大文件时内存占用极低,适合百万级数据量。

命令示例(假设CSV用逗号分隔,若为其他分隔符替换-F','中的逗号):

# 带表头的情况:先打印表头,再处理数据行
awk -F',' 'NR==1{print; next} {key=$1","$2","$3; line[key]=$0} END{for(k in line) print line[k]}' input.csv > output.csv

# 无表头的情况:直接处理所有行
awk -F',' '{key=$1","$2","$3; line[key]=$0} END{for(k in line) print line[k]}' input.csv > output.csv

逻辑说明:

  1. -F','指定CSV的分隔符,根据你的实际格式调整(比如制表符用-F'\t',示例中的...用-F'...')
  2. 用前3列(拼接时加上分隔符,避免不同列内容拼接导致的歧义)作为唯一标识键
  3. 用关联数组line存储每个键对应的最新行——后续出现的重复行会覆盖之前的记录
  4. 最后遍历数组输出所有行,每个重复组仅保留最后一次出现的条目

方案二:用Python Pandas(适合熟悉Python的场景)

Pandas是Python常用的数据处理库,代码可读性高,适合需要后续扩展数据处理逻辑的场景。

代码示例:

import pandas as pd

# 读取CSV,sep指定分隔符,根据实际情况调整
df = pd.read_csv('input.csv', sep='...')

# 按除最后一列外的所有列去重,保留最后一次出现的行
df_deduped = df.drop_duplicates(subset=df.columns[:-1], keep='last')

# 保存去重后的结果,index=False避免写入额外的索引列
df_deduped.to_csv('output.csv', index=False, sep='...')

注意事项:

  • 若内存紧张,可添加chunksize参数分块读取处理,但200万行数据在常规8G内存机器上无需分块
  • subset参数可手动指定列名,比如subset=['column 1', 'column 2', 'column 3'],避免列顺序变化导致的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:05:20