Почему это происходит?
Поскольку df2
является копией фрагмента df
.
Почему это рискованно?
Это сообщение о том, что df2
и df
- это разные вещи.Это было введено, потому что не всегда было очевидно, что они были.
Возьмите пример кода из документов:
def do_something(df):
foo = df[['bar', 'baz']] # Is foo a view? A copy? Nobody knows!
# ... many lines here ...
foo['quux'] = value # We don't know whether this will modify df or not!
return foo
Как мне решить это?
Либо путем явного копирования фрагмента:
df2 = df[df['A'] < 3].copy()
df2['C'] = 100
, либо с помощью loc
:
df.loc[df['A'] < 3, 'C'] = 100