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

请教:如何筛选CSV中Path列含"A/B/C"的行并生成新CSV?

CSV筛选并写入新文件的Python实现方案

原代码的问题说明

  • 你用usecols=["Path"]只读取了Path列,后续无法保留原数据的整行内容
  • 直接遍历df得到的是列名而非每行的Path值,判断逻辑不成立

完整实现代码(基于pandas)

import pandas as pd

def filter_and_write_csv():
    # 读取完整CSV文件,不限制列
    df = pd.read_csv("demo_file.csv")
    # 筛选Path列包含"A/B/C"的行,na=False避免空值报错
    filtered_df = df[df["Path"].str.contains("A/B/C", na=False)]
    # 将筛选后的完整行写入新CSV,index=False去掉自动生成的行号
    filtered_df.to_csv("filtered_demo_file.csv", index=False)

# 执行函数
filter_and_write_csv()

关键步骤解释

  • 读取完整数据:移除usecols参数,确保保留所有列信息
  • 高效筛选:利用pandas的str.contains做模糊匹配,布尔索引直接过滤目标行
  • 规范写入:to_csv的index=False保证输出CSV格式与原文件一致

备选方案(原生Python实现,无需pandas)

import csv

def filter_csv_with_csv_module():
    with open("demo_file.csv", "r", newline="", encoding="utf-8") as infile, \
         open("filtered_demo_file.csv", "w", newline="", encoding="utf-8") as outfile:
        reader = csv.DictReader(infile)
        writer = csv.DictWriter(outfile, fieldnames=reader.fieldnames)
        writer.writeheader()
        # 逐行判断并写入符合条件的行
        for row in reader:
            if "A/B/C" in row["Path"]:
                writer.writerow(row)

filter_csv_with_csv_module()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 00:32:13