【问题标题】:Pandas read_excel returns PendingDeprecationWarningPandas read_excel 返回 PendingDeprecationWarning
【发布时间】:2020-06-02 22:29:01
【问题描述】:

我一直在使用read_excel 函数将 Excel 文件作为 Pandas 数据框导入,到目前为止没有出现明显问题。但是,我刚刚意识到,在最近的一些更新之后,我收到了以下警告:

/usr/local/lib/python3.7/site-packages/xlrd/xlsx.py:266: PendingDeprecationWarning: 此方法将在未来版本中移除。请改用“tree.iter()”或“list(tree.iter())”。

for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator(): /usr/local/lib/python3.7/site-packages/xlrd/xlsx.py:312:PendingDeprecationWarning:此方法将在未来版本中删除。请改用“tree.iter()”或“list(tree.iter())”。

for elem in self.tree.iter() if Element_has_iter else self.tree.getiterator():

搜索互联网,似乎xlrd 正在被openpyxl 取代。现在我的问题是:

  • 此警告是什么意思,我该怎么办?
  • 此时我的数据导入安全吗?我是否需要担心某些东西无法正常工作?
  • tree.iter()list(tree.iter()) 方法是什么?他们正在取代什么?
  • 是否有其他方法可以将 Excel 文件作为 pandas 数据框导入而不会收到此警告?
  • 我应该在某处报告错误或问题吗?在哪里?

我的环境是:

  • macOS Mojave 10.14.6
  • Python 3.7.6
  • 熊猫 1.0.0
  • xlrd 1.2.0

【问题讨论】:

  • xlrd 不再维护,改用 openpyxl。
  • @CharlieClark 当然可以,但是怎么做? pandas 中还有其他命令吗?或者告诉read_excel应该使用哪个引擎?

标签: python pandas import openpyxl xlrd


【解决方案1】:

您的数据导入目前是“安全的”。要消除警告并使您的代码面向未来,请尝试:

pd.read_excel(filename, engine="openpyxl")

或将其放在脚本的开头:

import pandas as pd
pd.set_option("xlsx", "openpyxl")

【讨论】:

  • 这是新功能吗?
  • Python 唯一不变的就是变化。 xlrd! 可能除外
  • 我希望 pd.set_option 存在,但在查看源代码后我现在还没有看到它。
  • set_option 确实存在,但至少在 1.1.3 版中,io.excel.xlsx.reader 在代码中被忽略。似乎唯一可行的答案是将engine="openpyxl" 传递给pd.read_excel
猜你喜欢
  • 2015-08-26
  • 1970-01-01
  • 2020-05-07
  • 2021-09-25
  • 1970-01-01
  • 2020-01-20
  • 2014-07-25
  • 2019-09-14
  • 1970-01-01
相关资源
最近更新 更多