python - Pandas read_excel 返回 'not enough values to unpack (expected 2, got 1)'

标签 python pandas dataframe python-import

我的问题很简单,我只是想使用 pandas 将位于本地的 excel 文件读入数据框。

filename = 'test.xlsx'
df = pd.read_excel(filename)

xlsx 文件有多个工作表,但我得到相同的 “ValueError:没有足够的值来解压(预期 2,得到 1)”,即使在指定工作表名称时也是如此。

Traceback (most recent call last):

File "", line 1, in pd.read_excel(filename)

File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\excel.py", line 200, in read_excel io = ExcelFile(io, engine=engine)

File "C:\ProgramData\Anaconda3\lib\site-packages\pandas\io\excel.py", line 257, in init self.book = xlrd.open_workbook(io)

File "C:\ProgramData\Anaconda3\lib\site-packages\xlrd__init__.py", line 422, in open_workbook ragged_rows=ragged_rows,

File "C:\ProgramData\Anaconda3\lib\site-packages\xlrd\xlsx.py", line 833, in open_workbook_2007_xml x12sheet.process_stream(zflo, heading)

File "C:\ProgramData\Anaconda3\lib\site-packages\xlrd\xlsx.py", line 553, in own_process_stream self.do_merge_cell(elem)

File "C:\ProgramData\Anaconda3\lib\site-packages\xlrd\xlsx.py", line 609, in do_merge_cell first_cell_ref, last_cell_ref = ref.split(':')

ValueError: not enough values to unpack (expected 2, got 1)

编辑:我创建了一个新的 Excel 文件,并将两个选项卡从原始文件复制到新的 Excel 文件中。 Pandas read_excel 使用新文件。但是,我希望能够从原件开始工作。

最佳答案

我仍然不完全理解这个问题的机制,但我能够解决它。我使用 urllib.requests 中的 urlopen 将文件下载到本地,并使用 openpyxl 加载工作簿,然后加载我想要的工作表。该工作表顶部有 5 行合并单元格,底部有 5 行合并单元格。然后,我使用 unmerge_cells 方法取消合并仅合并单元格的最后 5 行。然后我用修改后的工作表再次保存了工作簿。然后我可以使用 skiprows=5 参数运行 pd.read_excel。它是这样工作的。

关于python - Pandas read_excel 返回 'not enough values to unpack (expected 2, got 1)',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48813490/

相关文章:

Python: "if not any"的问题

python - 运行 jupyterlab 时出现黑屏

python - 在 Numpy 日期时间数组中查找唯一日期

python - 根据不同类型的值派生日期列

python - 计算列中出现的频率

python - 在 openCV 中如何从 python 中的 opencv_createsamples 生成的矢量文件加载图像?

python - 无法安装 numpy - 需要 MS Visual C++ 14.1。但是安装了

python - Convert_to_r_dataframe 给出错误 no attribute dtype

python - 将函数应用于 pandas groupby 数据框中的所有列

python - 当多个匹配时使用 apply() 将新值添加到数据帧