Pandas 的 read_excel 返回 PendingDeprecationWarning。

3

目前我一直使用read_excel函数将Excel文件导入为Pandas数据框,没有出现任何明显的问题。然而,最近更新后我发现出现以下警告:

/usr/local/lib/python3.7/site-packages/xlrd/xlsx.py:266: PendingDeprecationWarning: This method will be removed in future versions. Use 'tree.iter()' or 'list(tree.iter())' instead.

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: This method will be removed in future versions. Use 'tree.iter()' or 'list(tree.iter())' instead.

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
  • Pandas 1.0.0
  • xlrd 1.2.0

1
xlrd不再维护,请使用openpyxl代替。 - Charlie Clark
1
@CharlieClark 当然可以,但是怎么做呢?在 pandas 中有其他命令吗?或者有没有一种方法告诉 read_excel 应该使用哪个引擎? - Foad S. Farimani
1个回答

7

目前您的数据导入是“安全的”。为了消除警告并未将来的代码未雨绸缪,请尝试以下方法:

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

或者将此代码放置在您的脚本开头:
import pandas as pd
pd.set_option("xlsx", "openpyxl")

这是一个新功能吗? - Foad S. Farimani
4
Python 的唯一不变之处就是变化。也许唯一的例外是 xlrd - adr
我希望pd.set_option存在,但是在查看源代码后,我目前没有看到它。 - shapiromatron
set_option 存在,但至少在版本1.1.3中,代码中忽略了 io.excel.xlsx.reader。唯一有效的答案似乎是将 engine="openpyxl" 传递给 pd.read_excel - Leo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接