我正在尝试排查this widely discussed pandas warning。
在尝试查明位置时(虽然我也对如何执行此操作感兴趣),但我想在SettingWithCopyWarning上设置warnings.simplefilter错误。
我正在尝试:
import warnings
warnings.simplefilter("error", SettingWithCopyWarning)
这不起作用,因为解释器不知道SettingWithCopyWarning是什么。我假设它是由pandas创建的Warning的子类,但我不确定如何正确设置此过滤器(或如何直接访问该类)。
对于其他颜色,警告(在最新版本的python或pandas中,不确定更改的位置)请告诉您位置,但在这种情况下,它发生在pandas核心代码中:
/path/to/my/virtualenv/lib/python2.7/site-packages/pandas/core/indexing.py:426: 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
我需要看到整个追溯,以确定最终触发此警告的pandas调用是什么,因此我希望得到错误。
感谢您帮助弄清楚如何查明此警告。
答案 0 :(得分:2)
您需要指定其准确位置:
import pandas as pd
import warnings
warnings.simplefilter("error", pd.core.common.SettingWithCopyWarning)