@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的建议后,您使用了warnings
库。 现在,如其所言,警告已被删除。 但是,仍存在一些讨厌的消息:
>>> 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.
>>>
按标准库的定义,这些不是真正的警告。Pandas实现了自己的警告系统。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
进一步的追踪显示我没有时间处理这个问题。你可能也没有时间处理。希望这可以避免你陷入困境,或者激励某人找到如何真正抑制这些消息的方法!
warnings....ignore
以忽略FutureWarning
。请注意不要改变原意。 - michael