遍历目录中的文件并根据其他文件从其中删除行

时间:2019-06-08 09:31:20

标签: python python-3.x pandas dataframe

我正在寻找一种方法来遍历目录中的30多个文件,并根据其他文件中的ID从其中删除行。这些文件包含两列-ID和一个值,没有列名。另一个文件仅包含具有应删除的ID(“ id”)的列(“ ids_toberemoved”)。清理完30个文件后,我想将它们导出到其他文件夹。

这是我到目前为止所拥有的:

button.addEventListener('click', function() { test1(); })
button.addEventListener('click', function() { test2(); })

我在迭代数据帧并将其与“ ids_toberemoved”结合在一起的步骤中丢失了一些东西,以便删除具有匹配ID的行。另外,我不知道清理后如何将每个文件存储到其他文件夹。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

尝试以下方法:

from pathlib import Path

myPath = Path("F:\\Other")
ids_toberemoved = pd.read_csv('F:\\ids.csv', squeeze=True)

res = pd.concatenate([pd.read_csv(f, header=None, names=["ID","val"])
                        .query("ID not in @ids_toberemoved")
                      for f in myPath.glob("*.csv")], 
                     ignore_index=True)

更新:以清除文件并单独将其导出为"filename_clean.csv"

_ = [pd.read_csv(f, header=None, names=["ID","val"])
       .query("ID not in @ids_toberemoved")
       .to_csv(f.with_name(f"{f.stem}_clean{f.suffix}"), index=False)
    for f in myPath.glob("*.csv")]