我想循环浏览单个文件夹中的许多Excel文件,并仅在某些选项卡包含某个字符串值的情况下提取某些选项卡中包含的信息。因此,例如,一个电子表格可能有20个标签,但我只希望在该标签中某处包含字符串“ Apples”的标签(及其信息)。 (看起来它总是位于第一行)。然后,我想将所有这些选项卡聚合到一个电子表格中。这个问题与以前的SO问题是不同的,因为我的标签页名称不统一。有时,我想要的选项卡称为“ Apple Sauce”,而其他时候则称为“ Apple Jacks”。这就是为什么我需要在选项卡本身中查找字符串,而我不能仅指定工作表名称的原因。
到目前为止,我已经编写了以下代码:
import pandas as pd
import os
root = r"my_dir"
agg_df = pd.DataFrame()
for directory, subdirectory, files in os.walk(root):
for file in files:
if file.endswith('.xlsm'):
filepath = os.path.join(directory, file)
# I want to do some kind of if statement here maybe to say if sheet_name.contains("Apples")
df_temp = pd.read_excel(filepath)
df_temp['Filepath'] = filepath
agg_df = agg_df.append(df_temp)
答案 0 :(得分:0)
您可以将re
模块与ExcelFile
函数一起使用来读取工作表名称,并对其进行迭代以读取满足某些正则表达式条件的每张工作表。
import pandas as pd
import os
import re
root = r"Directory_path"
agg_df = pd.DataFrame()
for directory, subdirectory, files in os.walk(root):
for file in files:
if file.endswith('.xlsm'):
filepath = os.path.join(directory, file)
xls = pd.ExcelFile(filepath)
for i in xls.sheet_names:
if re.search(r'Apple', i):
df_temp = pd.read_excel(filepath, sheet_names=i)
#Continue the data processing that you want to carry on here and append the result to a dataframe