批量过滤多CSV文件行时出现KeyError: 'gene'错误求助
KeyError: 'gene' 问题分析与解决
核心错误原因
你脚本里犯了一个关键错误:用delimiter='\t'(制表符分隔)读取CSV文件——CSV默认是逗号分隔的,这会导致pandas把整行内容当成单独一列,自然找不到名为gene的列,直接触发KeyError。
修正后的脚本
# 只保留目标基因并覆盖原CSV文件 import os import glob import pandas as pd path = '/Users/adriana/Library/Documents/raw_data' all_files = glob.glob(os.path.join(path, "*.csv")) genes = ["mmp2", "mmp9"] for file in all_files: # 用CSV默认的逗号分隔读取,不要用tab df = pd.read_csv(file) # 可选:调试用,快速定位异常文件 if 'gene' not in df.columns: print(f"文件 {file} 中未找到'gene'列,跳过") continue cleaned = df[df['gene'].isin(genes)] # 写入时去掉索引列,避免额外添加无用列 cleaned.to_csv(file, index=False)
额外排查点(若修正后仍报错)
- 列名大小写问题:检查文件列名是
gene还是Gene/GENE,可以读取后打印df.columns确认,再对应调整筛选时的列名。 - 列名含空格:如果列名前后有空格(比如
gene或gene),先清理列名:df.columns = df.columns.str.strip() - 分隔符不统一:部分CSV可能用分号(
;)作为分隔符,需指定sep=';'读取。
内容的提问来源于stack exchange,提问作者Adriana
相关产品推荐
相关产品推荐

