Панды - Строка логических условий - SettingWithCopyWarning - PullRequest
0 голосов
/ 28 августа 2018

Мне интересно, может ли кто-нибудь помочь мне с этим предупреждением, которое я получил в своем коде. Код правильно оценивает элементы, но это предупреждение беспокоит меня, и я не могу найти хорошее решение, учитывая, что мне нужно объединить несколько логических условий.

Предыстория: представьте, что у меня есть магический идентификатор фрукта, и у меня есть файл csv, в котором перечислены, какие фрукты были идентифицированы и в какой области (1, 2 и т. Д.). Я прочитал в CSV-файл со столбцами «FruitID» и «Площадь». Идентификация «ЯБЛОКО» или «яблоко» в Зоне 1 оценивается как правильная / истинная (другие идентифицированные плоды являются неправильными / ложными). Я применяю подобную логику для других областей, но я не буду вдаваться в подробности.

Есть идеи, как это исправить? Должен ли я использовать .loc, хотя я не уверен, что это будет работать с несколькими логическими значениями. Спасибо!

Мой фрагмент кода, который запускает CopyWarning:

Area1_ID_df['Area 1, Score']=(Area1_ID_df['FruitID']=='APPLE')|(Area1_ID_df['FruitID']=='apple')

StackTrace:

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

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Если строка, которая вызывает эту ошибку, действительно: s = t | u, где t и u - логически последовательные индексы, вы не должны беспокоиться о SettingWithCopyWarning.

Это предупреждение , а не ошибка . Последнее указывает на наличие проблемы, первое указывает, что может быть проблемой. В этом случае Pandas предполагает, что вы можете работать с копией, а не с видом.

Если результат будет таким, как вы ожидаете, вы можете спокойно проигнорировать предупреждение.

0 голосов
/ 28 августа 2018

Панды находят неоднозначным то, что вы пытаетесь сделать. Некоторые операции возвращают представление набора данных, тогда как другие операции создают копию набора данных. Путаница заключается в том, хотите ли вы изменить копию набора данных, хотите ли вы изменить исходный набор данных или пытаетесь создать что-то новое.

https://www.dataquest.io/blog/settingwithcopywarning/ - отличная ссылка, чтобы узнать больше о проблеме, с которой вы столкнулись.

...