почему я не могу подавить предупреждение с помощью регулярного выражения с использованием предупреждений.filterwarnings

97
10

Я хочу подавить определенный тип предупреждения, используя регулярное выражение. Предупреждающее сообщение:

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.*")

Однако это не удалось. Я попытался вставить другую часть предупреждающего сообщения в регулярное выражение, но все еще не удалось. Я хочу знать, почему.

спросил(а) 2021-01-27T23:44:14+03:00 2 месяца, 2 недели назад
1
Решение
116

Это была ошибка?

AssertionError: message must be a string

warnings.filterwarnings принимает только строку для аргумента message и регулярное выражение не будет компилироваться там. Если вы действительно хотите подавить эту ошибку, выполните следующие действия:

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

В противном случае вы можете проверить способы, чтобы избежать настройкиWithCopyWarning, поскольку многие другие люди столкнулись с одной и той же проблемой: как бороться с SettingWithCopyWarning в Pandas?

ответил(а) 2021-01-27T23:44:14+03:00 2 месяца, 2 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема