我正在访问我定义的路径中的xls文件:
path = os.chdir('C:\\Users\\BKS\\Desktop\\python\\pk list')
files = os.listdir(path)
files_xls = [f for f in files if f[-3:] == 'xls']
df = [pd.read_excel(f, 'Sheet1')[['Exp. m/z','Intensity']] for f in files_xls]
然后我心想,如果xls文件被组织在不同的文件夹中怎么办?有没有办法将files_xls循环到文件夹中的每个文件?这意味着,访问文件夹然后循环遍历每个文件,然后转到下一个文件夹然后执行相同的操作?
我希望获取每个xls文件所在的文件夹的名称,并将它们合并到df中,如下所示:
Tag1 Tag2 Tag
1 1 A01.xls
2 1 A02.xls
3 2 A03.xls
4 2 A04.xls
5 3 A05.xls
这些xls文件将位于文件夹中:
'C:\\Users\\BKS\\Desktop\\python\\pk list\\20170620 Sample 1-48'
和其他一些xls文件将在另一个文件夹中:
'C:\\Users\\BKS\\Desktop\\python\\pk list\\20170620 Sample 49-96'
这些文件夹可能具有相同名称的xls文件,但其中包含不同的数据。所以我的目标是按顺序遍历pk list文件夹中的所有文件,并将文件夹的名称(例如20170620样本1-48)合并到df。让我们对上表说,这两个文件夹有A01~A05.xls:
Tag1 Tag2 Folder Name Tag
1 1 20170620 Sample 1-48 A01.xls
2 1 20170620 Sample 1-48 A02.xls
3 2 20170620 Sample 1-48 A03.xls
4 2 20170620 Sample 1-48 A04.xls
5 3 20170620 Sample 1-48 A05.xls
1 1 20170620 Sample 49-96 A01.xls
2 1 20170620 Sample 49-96 A02.xls
3 2 20170620 Sample 49-96 A03.xls
4 2 20170620 Sample 49-96 A04.xls
5 3 20170620 Sample 49-96 A05.xls
答案 0 :(得分:0)
你可以import glob
并使用它:
(这严格假设您只有pk list
文件夹下的子文件夹而没有文件。此外,第一个子文件夹中的所有文件都必须出现在其他子文件夹中)
import glob
import os
os.chdir("C:\\Users\\BKS\\Desktop\\python\\pk list\\20170620 Sample 1-48")
filenames = glob.glob("*.xls")
os.chdir("C:\\Users\\BKS\\Desktop\\python\\pk list")
foldernames = glob.glob("*")
for filename in filenames:
df = []
for foldername in foldernames:
# merge according to your requirement
df.append(pd.read_excel(f, 'Sheet1')[['Exp. m/z','Intensity']])
# Use merged 'df' here