【问题标题】:My Pandas is incorrectly reading values from a .xlsx file我的 Pandas 错误地从 .xlsx 文件中读取值
【发布时间】: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;不支持

标签: python excel pandas dataframe openpyxl


【解决方案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})

【讨论】:

    猜你喜欢
    • 2021-09-27
    • 2022-11-17
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 2023-02-20
    相关资源
    最近更新 更多