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

多CSV文件过滤失败行至新CSV的简便方法及脚本报错求助

问题修复与优化方案

原脚本存在的核心问题

  • 变量名不一致:定义的文件列表变量是csvfiles,但循环遍历错误使用了csv_files,导致"csv_files未定义"报错。
  • 缩进与逻辑错误:过滤数据的代码缩进位置错误,且dataframes是列表类型,不能直接使用DataFrame的索引语法筛选数据。
  • 路径格式错误:Windows路径中的反斜杠未转义,'C:\Users\''会被解析为无效路径,需用双反斜杠或原始字符串处理。
  • 冗余导入:重复导入csv库,且导入了未使用的sqlite3.Row模块。
  • 低效逻辑:先加载所有文件数据再过滤,不如单文件读取后立即过滤,减少内存占用。

修正后的完整代码

# 功能:读取目录下所有CSV文件,筛选result列为'fail'的行并写入新CSV
import pandas as pd
import os
import glob

# CSV文件目录路径(用原始字符串避免转义问题)
mycsvdir = r'C:\Users\'

# 获取目录下所有CSV文件路径
csvfiles = glob.glob(os.path.join(mycsvdir, '*.csv'))

# 存储所有过滤后的行
filtered_dfs = []

# 遍历每个CSV文件
for csvfile in csvfiles:
    # 读取单个CSV文件
    df = pd.read_csv(csvfile)
    # 筛选result列为'fail'的行(忽略大小写可选:case=False)
    fail_rows = df[df['result'] == 'fail']
    # 将筛选结果加入列表
    filtered_dfs.append(fail_rows)

# 合并所有筛选后的DataFrame
final_df = pd.concat(filtered_dfs, ignore_index=True)

# 写入新CSV文件
final_df.to_csv('ROI_Fail.csv', index=False)

关键优化说明

  1. 路径处理:用原始字符串r'C:\Users\'避免Windows路径的转义错误。
  2. 即时过滤:读取单个文件后立即筛选目标行,避免加载全量数据占用过多内存。
  3. 合并数据:用pd.concat合并所有筛选后的DataFrame,ignore_index=True重置索引避免重复。
  4. 写入优化:index=False避免将DataFrame的索引写入CSV文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 09:50:41