Python Pandas - Понимание inplace = True
В библиотеке pandas
много раз есть возможность изменить объект на месте, например, со следующим утверждением...
df.dropna(axis='index', how='all', inplace=True)
Мне любопытно, что возвращается, а также как обрабатывается объект, когда inplace=True
передается против inplace=False
.
Все ли операция модификация self
когда inplace=True
? И когда inplace=False
- это новый объект, созданный немедленно, например new_df = self
а затем new_df
?
Ответы
Ответ 1
Когда inplace=True
передается, данные переименовываются на место (он ничего не возвращает), поэтому вы должны использовать:
df.an_operation(inplace=True)
Когда inplace=False
передается (это значение по умолчанию, поэтому это необязательно), выполняет операцию и возвращает копию объекта, поэтому вы должны использовать:
df = df.an_operation(inplace=False)
Ответ 2
Способ, которым я его использую, - это
# Have to assign back to dataframe (because it is a new copy)
df = df.some_operation(inplace=False)
Или же
# No need to assign back to dataframe (because it is on the same copy)
df.some_operation(inplace=True)
ВЫВОД:
if inplace is False
Assign to a new variable;
else
No need to assign
Ответ 3
Обычно я использую numpy.
вы используете inplace = True, если вы не хотите сохранять обновленные данные в одну и ту же переменную
data["column1"].where(data["column1"]< 5, inplace=True)
это то же самое, что...
data["column1"] = data["column1"].where(data["column1"]< 5)