-1

我最近切换到 Jupyter Lab,发现 pd.read_excel() 现在在其参数中需要“engine = 'openpyxl'”,以避免默认为 xlrd 时出现已知错误。不幸的是,openpyxl 作为一个引擎引入了我以前的代码都没有考虑的问题。

特别是,当我导入 xlsx 文件时,它似乎将 NaN 值的行附加到数据帧的末尾。我知道 Excel 工作表开头的空白行被推到导入末尾的问题,而这里不是这种情况。我有一个带有多个选项卡的 Excel 文件,每个选项卡的第一行中有 16 个唯一的列标题(并且选项卡之间相同),并且每一行都填充了数据。以前,在 Jupyter Notebook(并且没有 engine='openpyxl')中,带有 sheet_name=None 的 read.excel() 将从每个选项卡创建一个数据帧字典,不会读取数据末尾之外的其他行。现在,我在一些数据帧的末尾得到了一千多行空白行。

我不期待浏览我所有的旧代码并将 dropna(how='all) 添加到每个导入中,并且担心这可能表明我没有发现更大的问题。有没有人经历过类似的事情?下面是在 Jupyter Lab 中导入相关选项卡的示例,以及选项卡本身的 Excel 工作表,第 5226 行之外没有数据。

谢谢您的帮助!

从 Jupyter Lab 导入一个选项卡

有问题的选项卡,在第 5226 行结束

4

1 回答 1

0

在这种情况下,您需要使用 1.1.4 版的 pandas,engine="openpyxl"但使用 1.2.4 版的 pandas,您将不需要 openpyxl 参数。所以升级可能是值得的,但不确定它是否能解决你的问题。

pip install pandas --upgrade

检查您安装了哪些版本

import pandas as pd
import openpyxl
print(pd.__version__)
print(openpyxl.__version__)
于 2021-05-04T15:47:22.407 回答