Я пытаюсь устранить это широко обсуждаемое предупреждение pandas.
При попытке определить местоположение (хотя мне также интересно, как это сделать вообще), я хочу настроить warnings.simplefilter к ошибке только при настройкеWithCopyWarning.
Я пытаюсь:
import warnings
warnings.simplefilter("error", SettingWithCopyWarning)
Это не работает, потому что интерпретатор не знает, что такое SettingWithCopyWarning. Я предполагаю, что это подслой предупреждения, созданный pandas, но я не уверен, как правильно настроить этот фильтр (или как получить доступ к классу напрямую).
Для дополнительного цвета предупреждения (в последних версиях 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, который в конечном итоге вызвал это предупреждение, поэтому мое желание получить ошибку.
Спасибо, что помогли выяснить, как определить это предупреждение.
Вам нужно указать точное местоположение:
import pandas as pd
import warnings
warnings.simplefilter("error", pd.core.common.SettingWithCopyWarning)
pandas.io.common.PerformanceWarning
возможно?