如何使用通配符导入多个具有相似工作表名称的 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 连接起来

使用工作表名称和删除隐藏行自动过滤

如何在大型矩阵中合并具有相似名称的列

使用 Impala 选择具有通配符模式的多个表并将它们连接起来

对具有相同模式名称的多个数据库使用 mysql 函数

如何使用 C# 将多个 Excel 工作表导入 SQL 表?