我的 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 文件中读取值的主要内容,如果未能解决你的问题,请参考以下文章
在 Python pandas 中将 xlsx 文件转换为字典
『开发技巧』解决Python使用pandas读取xlsx文件报错“ImportError: Missing optional dependency ‘xlrd‘”的问题