Pandas SettingWithCopy Предупреждение с использованием .loc с двумя файлами данных [дубликат]

Собственно, это именно то, чего вы ожидаете. Давайте разложим, что здесь происходит:

Вы пишете

lst = [[1] * 4] * 3

Это эквивалентно:

lst1 = [1]*4
lst = [lst1]*3

Это означает, что lst - это список с 3 элемента, указывающие на lst1. Это означает, что две следующие строки эквивалентны:

lst[0][0] = 5
lst1[0] = 5

Поскольку lst[0] - это только lst1.

Чтобы получить желаемое поведение, вы можете использовать понимание списка:

lst = [ [1]*4 for n in xrange(3) ]

В этом случае выражение переоценивается для каждого n, что приводит к другому списку.

9
задан Amelio Vazquez-Reina 15 May 2014 в 21:47
поделиться

2 ответа

В случае 1, df['A'] создает копию df. Как поясняется в документации Pandas , это может привести к неожиданным результатам при цепочке, поэтому возникает предупреждение. Случай 2 выглядит корректно, но возможны ложные срабатывания:

Предупреждение. Приведенные в цепочку предупреждения / исключения назначаются для информирования пользователя о возможном недопустимом назначении. Могут быть ложные срабатывания; ситуации, в которых непреднамеренно сообщается цепочное присваивание.

Чтобы отключить SettingWithCopyWarning для одного кадра данных, используйте

df.is_copy = False

Чтобы полностью отключить привязанные назначения, использовать

options.mode.chained_assignment = None
9
ответ дан kxsong 20 August 2018 в 14:45
поделиться
  • 1
    Для отключения предупреждения используйте следующее: pd.set_option('chained_assignment',None) – danger89 20 January 2017 в 13:28

Другое решение, которое должно подавлять предупреждение:

df = df.copy()
df['B'] = df['A']/25
df['B'] = df['A']/50
3
ответ дан Charlie Haley 20 August 2018 в 14:45
поделиться
  • 1
    Это действительно работает. Не совсем понятно, если это сейчас быстрее или больше памяти. Я не знаю влияния команды copy (). Так как на самом деле копия снова переназначается на df. Похоже, что ничего не изменилось в конце. – danger89 20 January 2017 в 13:24
Другие вопросы по тегам:

Похожие вопросы: