【问题标题】:Pandas 0.19.2 read_excel IndexError: List index out of rangePandas 0.19.2 read_excel IndexError:列表索引超出范围
【发布时间】:2017-09-09 18:53:12
【问题描述】:

我正在寻找解析 Excel 电子表格。我决定使用 pandas,但马上就被一个错误抓住了。

我从下面的代码开始,但尝试使用完整路径并尝试设置工作表名称。

import pandas as pd

table = pd.read_excel('ss_12.xlsx')

if __name__ == '__main__':
    pass

excel 电子表格与我的脚本文件位于同一目录中。我教过它在这个意义上与 open() 的工作方式相同,只是在同一目录中时需要一个名称。我已经在网上查看了一些示例,并且通过它们应该可以工作。

我正在尝试剥离上图中看到的第一列。完整的错误(不确定如何格式化,抱歉)

C:\xx\Playpen\ConfigList_V1_0.xlsx
Traceback (most recent call last):
  File "C:\xx\Playpen\getConVars.py", line 12, in <module>
    pd.read_excel(excelFile)
  File "C:\xx\Programs\Python\Python35\lib\site-packages\pandas\io\excel.py", line 200, in read_excel
    **kwds)
  File "C:\xx\Programs\Python\Python35\lib\site-packages\pandas\io\excel.py", line 432, in _parse_excel
    sheet = self.book.sheet_by_index(asheetname)
  File "C:\xx\Programs\Python\Python35\lib\site-packages\xlrd\book.py", line 432, in sheet_by_index
    return self._sheet_list[sheetx] or self.get_sheet(sheetx)
IndexError: list index out of range

【问题讨论】:

  • 你能发布你正在使用的完整代码和完整的错误回溯吗?上面的图片不完整,我不知道问题出在哪里。
  • @noah 这个,恐怕是完整的代码。我刚开始玩它,这个错误发生在基本的测试尝试中。基本上我尝试加载我的 excel 电子表格。我将它与脚本放在同一个文件夹中,并尝试了您在上面看到的内容。我也尝试使用完整路径,例如pd.read_excel("C:\\....\\my_spread_sheet") 然后我尝试了一个命名表,例如pd.read_excel("C:\\....\\my_spread_sheet", sheetname='sheet1.xlsx')
  • 可以分享一下excel文档吗?这似乎可能是它正在使用的 pandas 或 excel 库 xlrd 中的错误。您可以尝试在 pandas github 上提交错误报告,包括导致错误的 excel 文档。
  • @noah,我宁愿不分享与工作相关的完整文档。我会考虑发送错误报告并可能通过该媒体分享。现在,我想我将使用除 pandas 之外的其他模块。感谢您的帮助
  • openpyxl 对同一个文档也有问题。将内容复制到新文档,我现在打开它。我今天将添加更多信息。从 openpyxl 返回的错误信息似乎更多。

标签: python excel pandas


【解决方案1】:

如果你只是想读取文件,最好使用os.path,如下:

import os
import pandas as pd

dir = 'path_to_excel_file_directory'
excelFile = os.path.join(dir, 'fileName.xlsx')
pd.read_excel(excelFile)

如果excel文件和你的脚本在同一个目录下,你可以使用inspect来自动检测它所在的目录:

scriptName = inspect.getframeinfo(inspect.currentframe()).filename
dir = os.path.dirname(os.path.abspath(filename))
excelFile = os.path.join(dir, 'fileName.xlsx')
pd.read_excel(excelFile)

最后一点:部分

if __name__ == '__main__':
    pass

与问题无关。

【讨论】:

  • 哪些行给出了确切的错误?您可以在问题中添加一些数据吗?
  • pd.read_excel(excelFile) 仍然导致错误。我在问题中提到我尝试了直接路径,但我只是做了 pd.read_excel("C:\\....\\my_spread_sheet") 并得到了与我添加到问题中的相同的错误。
【解决方案2】:

确保您拥有正确类型的 Excel 电子表格。我遇到了同样的错误,并意识到我已将其保存为 Strict XML Open Spreadsheet,它仍然具有 .xlsx 扩展名。

【讨论】:

  • 正确的扩展名位于保存页面列表的顶部。 +1 Excel 工作簿
  • 我非常感谢这个答案
【解决方案3】:

快速解决方案:创建一个全新文件 (.xls),其中包含出现错误的文件的内容。它对我有用。

【讨论】:

    猜你喜欢
    • 2011-10-31
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多