如何使用通配符导入多个具有相似工作表名称的 Excel 文件?
Posted
技术标签:
【中文标题】如何使用通配符导入多个具有相似工作表名称的 Excel 文件?【英文标题】:How do I import multiple excel files with similar sheet names using wild card? 【发布时间】:2020-09-28 04:41:36 【问题描述】:我正在使用以下代码导入名为“My Bench Sheet 1”的工作表。
bench_file_1 = pd.read_excel("Bench1.xlsx", sheet_name = "My Bench Sheet 1")
我有多个工作簿,其中的工作表以“我的工作表”开头。我想使用通配符,这样我每次导入时都不必输入工作表名称,因为除了最后的数字外,它基本上是相同的。
我尝试过使用这个通配符,但它不起作用。
bench_file_1 = pd.read_excel("Bench1.xlsx", sheet_name = "My Bench Sheet*")
【问题讨论】:
【参考方案1】:另一种(但最安全的)方法是首先读取整个 excel 文件,收集工作表名称。如本说明所示:https://***.com/a/17977609
excel = pd.ExcelFile("your_excel.xlsx")
excel.sheet_names
# ["Sheet1", "Sheet2"]
dfs = [pd.read_excel("your_excel.xlsx", sheet_name=n) for n in excel.sheet_names]
【讨论】:
这样做的一个优点是它是高性能的 - 数据只被读入内存一次,允许进一步处理而无需重复读入文件。【参考方案2】:你可以使用 f 个字符串吗?
例如:
for i in range(10):
bench_file_1 = pd.read_excel("Bench1.xlsx", sheet_name = f'My Bench Sheet i')
上面的例子只提供了一个从 0 到 9 的范围。如果您已经拥有该数字列表,则可以遍历该列表,而不是从某个范围内生成数字。
【讨论】:
但是如果有字母而不是数字怎么办。我想导入以“我的工作表”开头的工作表,而不管 Sheet 之后是什么。 您需要一种方法来获取要插入到 read_excel 方法中的名称列表。 ***.com/a/17977609 提供了一种获取所有工作表名称列表的方法。然后你可以使用 python re (docs.python.org/3/library/re.html) 模块来匹配任何符合你描述的模式的模块。以上是关于如何使用通配符导入多个具有相似工作表名称的 Excel 文件?的主要内容,如果未能解决你的问题,请参考以下文章
Pandas:使用多张工作表导入 xlsx,将列添加到每个 df 及其所属工作表的名称,将具有相同列数的 df 连接起来