@bdiamante的回答可能只对你有部分帮助。如果在屏蔽警告后仍然收到消息,这是因为pandas库本身正在打印该消息。除非您自己编辑Pandas源代码,否则您对此无能为力。也许内部有一个抑制它们的选择,或者一个覆盖事情的方法,但我找不到。
对于那些想知道原因的人…
假设您想要确保一个干净的工作环境。在脚本的顶部,放置pd.reset_option('all')。使用Pandas 0.23.4,你会得到以下内容:
>>> import pandas as pd
>>> pd.reset_option('all')
html.border has been deprecated, use display.html.border instead
(currently both are identical)
C:\projects\stackoverflow\venv\lib\site-packages\pandas\core\config.py:619: FutureWarning: html.bord
er has been deprecated, use display.html.border instead
(currently both are identical)
warnings.warn(d.msg, FutureWarning)
: boolean
use_inf_as_null had been deprecated and will be removed in a future
version. Use `use_inf_as_na` instead.
C:\projects\stackoverflow\venv\lib\site-packages\pandas\core\config.py:619: FutureWarning:
: boolean
use_inf_as_null had been deprecated and will be removed in a future
version. Use `use_inf_as_na` instead.
warnings.warn(d.msg, FutureWarning)
>>>
按照@bdiamante的建议,使用警告库。现在,正如它所说,这些警告已经被删除了。然而,一些恼人的信息仍然存在:
>>> import warnings
>>> warnings.simplefilter(action='ignore', category=FutureWarning)
>>> import pandas as pd
>>> pd.reset_option('all')
html.border has been deprecated, use display.html.border instead
(currently both are identical)
: boolean
use_inf_as_null had been deprecated and will be removed in a future
version. Use `use_inf_as_na` instead.
>>>
事实上,禁用所有警告会产生相同的输出:
>>> import warnings
>>> warnings.simplefilter(action='ignore', category=Warning)
>>> import pandas as pd
>>> pd.reset_option('all')
html.border has been deprecated, use display.html.border instead
(currently both are identical)
: boolean
use_inf_as_null had been deprecated and will be removed in a future
version. Use `use_inf_as_na` instead.
>>>
在标准库的意义上,这些不是真正的警告。熊猫实施了自己的警告系统。在警告消息上运行grep -rn可以看到pandas的警告系统是在core/config_init.py中实现的:
$ grep -rn "html.border has been deprecated"
core/config_init.py:207:html.border has been deprecated, use display.html.border instead
继续追下去说明我没有时间讲这个了。你可能也不知道。希望这能把你从兔子洞里救出来,或者激励别人想出如何真正地抑制这些信息!