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

如何用Python比对两个CSV文件并删除csv_2中无匹配的行

可行实现方案

1万行数据量级很小,以下3种方案都可以快速完成需求,按需选择即可:

方案1:Python实现(跨平台通用性最强)

逻辑简单易修改,不需要额外安装依赖,处理速度极快:

# 读取csv_1的所有合法ID存入集合,查询效率为O(1)
with open("csv_1.csv", "r", encoding="utf-8") as f:
    valid_ids = {line.strip() for line in f if line.strip()}

# 遍历csv_2过滤符合条件的行
result = []
with open("csv_2.csv", "r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        current_id = line.split(";")[0].strip()
        if current_id in valid_ids:
            result.append(line)

# 输出过滤后的结果到新文件
with open("filtered_csv_2.csv", "w", encoding="utf-8") as f:
    f.write("\n".join(result))

方案2:Linux/macOS 终端命令实现(无需写代码,一行完成)

直接用系统自带的awk工具处理:

awk -F ';' 'NR==FNR{id_set[$0];next} $1 in id_set' csv_1.csv csv_2.csv > filtered_csv_2.csv

命令逻辑说明:

  • -F ';' 指定csv_2的字段分隔符为分号
  • NR==FNR{id_set[$0];next} 读取第一个文件csv_1,把所有行内容存入集合
  • $1 in id_set 处理csv_2时判断第一列是否在集合内,符合条件就自动输出

方案3:Excel/WPS 可视化操作(适合无代码基础用户)

操作步骤:

  • 把csv_1的所有内容复制到表格的A列,再导入csv_2到同表格的C、D列(导入时指定分隔符为分号,自动拆分两列)
  • 在E列第一行输入公式 =COUNTIF(A:A,C1),下拉填充所有行
  • 筛选E列数值为1的行,复制筛选结果保存为新的csv文件即可

注意:如果你的csv文件包含表头,处理前需要先跳过第一行,避免把表头当做ID匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 17:06:07