根据行过滤多个 csv 文件时出错

问题描述 投票:0回答:1

我有一个包含 20 个 csv 文件的文件夹。每个文件大约有 10 列和数千行。 csv 文件如下所示:

基因 p 值 xyz
阿坎 0.05 123
mmp2 0.02 456
mmp9 0.07 789
nnos 0.09 123
gfap 0.01 456

我编写了以下脚本,目的是遍历每个文件并仅通过我指出的感兴趣的基因(在本例中为 mmp2 和 mmp9)过滤行,然后仅保存这些行的 csv 文件。

# the goal is to edit and save the csv files so they only contain the genes of interest

path = '/Users/adriana/Library/Documents/raw_data'
all_files = glob.glob(os.path.join(path, "*.csv")) #make list of file paths 
genes = ["mmp2", "mmp9"]
for file in all_files:
    path = '/Users/adriana/Library/Documents/raw_data'
    df = pd.read_csv(file,delimiter ='\t')
    cleaned = df[df['gene'].isin(genes)]
    cleaned.to_csv(file)

但是,我收到以下错误:

关键错误:“基因”

不知道为什么我会收到此错误,因为这是我每个文件中的一列。

python data-cleaning keyerror
1个回答
0
投票

尝试跳过它说缺少

gene
列的 dfs。并通过打印
gene
检查列名称是否与单词
df.info()
完全匹配。这样代码就不会失败,并且您可以看到哪个 dfs 导致了问题

if 'gene' in df.columns:
    cleaned = df[df['gene'].isin(genes)]
    ...
else:
    print(df.info())
© www.soinside.com 2019 - 2024. All rights reserved.