微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – 为什么我不能使用warnings.filterwarnings使用正则表达式来抑制警告

我想使用正则表达式来抑制特定类型的警告.
警告信息是:

C:\Anaconda3\lib\site-packages\pandas\core\indexing.py:420: SettingWithcopyWarning:

A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy 
self.obj[item] = s

我的抑制过滤器的方式:

import warnings
warnings.filterwarnings("ignore", message= ".*A value is trying to.*")

然而,它失败了.我确实尝试将警告消息的不同部分粘贴到正则表达式中但仍然失败.我想知道为什么.

解决方法:

这是你得到的错误吗?

AssertionError: message must be a string

warnings.filterwarnings只接受message参数的字符串,regex不会在那里编译.如果您确实想要抑制此错误,请执行以下操作:

import pandas as pd
warnings.simplefilter("error", pd.core.common.SettingWithcopyWarning)

否则,您可能想要查看避免SettingWithcopyWarning的方法,因为许多其他人已经解决了同样的问题:
How to deal with SettingWithCopyWarning in Pandas?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐