首页 > 解决方案 > 如何根据数据框列中的数据从文件夹中复制特定文件

问题描述

我有一个包含文件集合的文件夹。我想将这些文件的子集复制到另一个文件夹。我需要根据数据框的两列过滤我的文件。

所以,我的数据框有CNdate列,我的文件名中的模式是这样的:

09060083_1542296310_2_CON_ENT-Floor-Practice_2015-09-25-false_MRB3738.txt

其中第一个9 charachter是我CN在数据框中的列,here 09060083。并且此文件名中的日期date在我的数据框中2015-09-25

有了这些解释,我怎样才能只复制数据框中的文件?

到目前为止,我已经这样做了:dffinal是我的数据框。

source_path = 'path to source folder'
files = os.listdir(source_path)
out_path ='destination path to copy the filtered files there'

files2 = [f for f in files if (re.match(r'\d{4}-\d{2}-\d{2}', f)==dffinal['date']) & (f.rfind[1:8]==dffinal['CN'])]
copyfile(files2,out_path)

这个链接对我没有帮助,因为它只匹配文件名中的一些模式,而不是最终在数据框中找到它们。

更新我觉得这是一个简单的问题,虽然还没有成功,但我不知道如何解决它:| 当我只考虑第一个条件来检查有什么问题时:

files2 = [f for f in files if ((re.search(r'\d{4}-\d{2}-\d{2}',f).group(0))==(dffinal['date']))]

引发错误:ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

谢谢 :)

标签: pythonpandasfilefilterpattern-matching

解决方案


推荐阅读