【发布时间】:2016-09-25 23:24:14
【问题描述】:
我正在尝试使用 pandas 将 xlsx 文件读入 python。
我之前已经这样做了数千次,但由于某种原因它不适用于特定文件。
文件是从另一个来源下载的,我在使用 pandas 阅读时收到 AssertionError(见末尾):
df = pandas.read_excel(pathtomyfile, sheetname = "Sheet1")
变量是为路径定义的。路径存在(os.path.exists(path) 返回 True)。
当我复制文件的内容并将值粘贴到一个新的 Excel 文档中时,这个新文档将使用 read_excel() 方法打开。
当我复制文件的内容并将格式粘贴到新的 Excel 中时, 这个新的将使用 read_excel() 方法打开。
这似乎不是值或格式。
我猜这可能是编码问题?
感谢您的帮助。
df1 = pandas.read_excel(snap1)
File "C:\Python\python-3.4.4.amd64\lib\site-packages\pandas\io\excel.py", line 163, in read_excel
io = ExcelFile(io, engine=engine)
File "C:\Python\python-3.4.4.amd64\lib\site-packages\pandas\io\excel.py", line 206, in __init__
self.book = xlrd.open_workbook(io)
File "C:\Python\python-3.4.4.amd64\lib\site-packages\xlrd\__init__.py", line 422, in open_workbook
ragged_rows=ragged_rows,
File "C:\Python\python-3.4.4.amd64\lib\site-packages\xlrd\xlsx.py", line 794, in open_workbook_2007_xml
x12sheet.process_stream(zflo, heading)
File "C:\Python\python-3.4.4.amd64\lib\site-packages\xlrd\xlsx.py", line 531, in own_process_stream
self_do_row(elem)
File "C:\Python\python-3.4.4.amd64\lib\site-packages\xlrd\xlsx.py", line 597, in do_row
assert 0 <= self.rowx < X12_MAX_ROWS
AssertionError
【问题讨论】:
-
基于断言检查是
0 <= self.rowx < X12_MAX_ROWS我猜rowx要么是负数(我知道为什么会发生这种情况),要么比X12_MAX_ROWS更重要,你的电子表格是否显着大吗? -
不只是82行长,三列
-
那么文件中是否有可能存在超出范围的杂散值?如果您备份内容,全选并删除,然后再粘贴回内容怎么办?
-
当我复制到另一个 excel 文件时,我选择了所有.....当我尝试 read_table 方法时,它说的是找到了 0x89?这可能是错误的来源吗?
-
报错如下:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte
标签: python excel pandas xlsx xlrd