我的 Pandas 错误地从 .xlsx 文件中读取值

Posted

技术标签:

【中文标题】我的 Pandas 错误地从 .xlsx 文件中读取值【英文标题】:My Pandas is incorrectly reading values from a .xlsx file 【发布时间】:2021-07-01 21:58:53 【问题描述】:

我正在尝试将 .xlsx 文件读入数据帧。 在 Excel 中打开的 .xlsx 如下所示:

Heading 1 Heading 2 Heading 3
soda 12 4
pop 12 2
cola 12 3

但是我读到的数据框是:

df = pd.read_excel("fileName.xlsx", engine='openpyxl')

看起来像这样:

Heading 1 Heading 2 Heading 3
soda 0 4
pop 0 2
cola 0 3

有谁知道为什么第二个标题中的所有值都替换为 0?或者有什么办法可以绕过它?我不确定是否考虑到标准 read_csv 不再支持 .xlsx 所以我一直在使用 Openpyxl 版本。提前致谢!

编辑:所以 xlrd 也不再支持 .xlsx(仅 .xls),所以我安装了旧版本的 xlrd,但使用旧版本的 xlrd 得到的结果与使用当前版本的 xlrd 相同打开pyxl。还在寻求帮助...

我的意思是用 read_excel 代替 read_csv

【问题讨论】:

不指定engine参数就试试吧。 尝试在 csv 中转换您的 excel 表格,然后使用 read_csv 函数或安装 xlrd 这是读取 excel 文件的默认引擎 当我尝试使用 xlrd 或不使用引擎参数时,我收到错误 xlrd.biffh.XLRDError: Excel xlsx file;不支持 【参考方案1】:

您在问题中提到read_csv 不支持.xlsx,这是正确的,但是read_excel does 支持.xlsx。由于最新版本的 xlrd - 以前是 .xlsx 文件的标准引擎 - 只有 openpyxl 不再支持 xlrd。

如果您运行 xlrd 版本 1.2.0 或更早版本,为了避免使用 openpyxl 引擎,只需尝试使用:

df = pd.read_excel("fileName.xlsx")

但是,使用这个旧版本可能会使您面临安全漏洞,这就是首先停止支持 .xlsx 的原因。

xlrd 库的作者确实在this 问题的线索中回答了更深入的问题。

【讨论】:

当我尝试这样做时,我收到错误 xlrd.biffh.XLRDError: Excel xlsx file;不支持 对不起,您确实是对的,xlrd 事实上由于安全问题不再支持 .xlsx。也许this 帖子可以解决您的问题。【参考方案2】:

我有一个类似的问题,并通过使用参数'converters'指定列的数据类型来解决它。

你可以试试

df = pd.read_excel("fileName.xlsx", engine='openpyxl', converters ='Heading 2':int)

df = pd.read_excel("fileName.xlsx", engine='openpyxl', converters ='Heading 2':str)

【讨论】:

以上是关于我的 Pandas 错误地从 .xlsx 文件中读取值的主要内容,如果未能解决你的问题,请参考以下文章

无法将 xlsx.file 读取到数据框 Pandas

在 Python pandas 中将 xlsx 文件转换为字典

pandas读取excel文件出错啥原因?

『开发技巧』解决Python使用pandas读取xlsx文件报错“ImportError: Missing optional dependency ‘xlrd‘”的问题

使用 pandas 读取和编辑 excel 文件

如何有效地从 Pandas 数据框移动到 JSON