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)