如何在 Python 中读取具有不同名称的 Excel 工作表

Posted

技术标签:

【中文标题】如何在 Python 中读取具有不同名称的 Excel 工作表【英文标题】:How to read excel sheets with varying names in Python 【发布时间】:2020-12-30 14:08:46 【问题描述】:

我是 python 新手,我目前正在尝试通过从大约 20 个电子表格中读取特定工作表来创建数据框。但是,某些电子表格的名称与我要从中获取数据的选项卡不同。

我知道标签被命名为“A”或“AA”

我想知道是否有一种方法可以在 pandas read_excel 中传递这两个名称,因为名称在某些工作表中有所不同。我本质上是在寻找类似的东西

df = pd.read_excel('file.xlsx', sheet_name = 'A' or 'AA')

如果我用 or 传递这两个名称,它会返回一个错误。有没有办法让 read_excel 函数从 Excel 文件中名为“A”或“AA”的工作表中获取数据?

谢谢。

【问题讨论】:

我不使用python,但我猜逻辑是从excel文件中获取工作表名称,然后检查它是否具有“A”或“AA”,然后传递该名称?看看THIS 是否能让你入门。 这些工作表中是否只包含一个选项卡?你能用索引代替名字吗,比如pd.read_excel('file.xlsx', sheet_name = 0) 【参考方案1】:

您可以使用try except 方法,首先尝试打开工作表A,如果失败,请尝试打开工作表AA

try:
    df = pd.read_excel('file.xlsx', 'A')
except:
    df = pd.read_excel('file.xlsx', 'AA')

如果有一个工作簿同时具有 AAA 工作表名称,或者如果工作簿没有任何工作表名称,则不会产生预期的结果。

【讨论】:

我建议让except 捕获特定异常。这太宽泛了。【参考方案2】:

试试看是否可行:

# this reads in the data and allows access to the sheet names
# also memory efficient
xls = pd.ExcelFile('path_to_file.xls')

# iterate to find sheet name that matches 
data = pd.read_excel(xls, sheet_name = [name for name in xls.sheet_names
                                        if name in ('A','AA')])

【讨论】:

【参考方案3】:

or 运算符与布尔值完全不同。

试试这个

try:
    df = pd.read_excel('file.xlsx', sheet_name='A')
except:
    df = pd.read_excel('file.xlsx', sheet_name='AA')

这将尝试打开名为“A”的工作表,如果没有工作表并且 pandas 抛出错误,它将打开名为“AA”的工作表

【讨论】:

以上是关于如何在 Python 中读取具有不同名称的 Excel 工作表的主要内容,如果未能解决你的问题,请参考以下文章

Python中一个类中具有相同名称的方法

如何读取具有动态名称的文件,同时避免在 R 中进行硬编码?

如何从具有相同简单名称的类中查找某个方法?

将具有相同***名称的 Python 包保存在不同的目录中

如何在 R 中读取具有重复列的羽毛文件

如何使用 pandas 从文件夹中读取和组合具有相似名称的 .csv 文件