Модификация фрейма данных inplace с возвращаемым значением


Я читаю "python для анализа данных" Уэса Маккинни и увидел следующий код

# Always returns a reference to a DataFrame
_ = data.rename(index={'Ohio':'Indiana'}, inplace=True)

Есть ли причина установить изменение inplace на _?

2 2

2 ответа:

_ обычно используется для обозначения переменной, которую мы не заботимся/не хотим использовать.

Это обычно имеет больше смысла, когда вы вытаскиваете кортеж и не заботитесь обо всех значениях, например

a, _ = (1, 2)  # pulls out a == 1

В этом случае, с одним значением, нет никаких оснований делать это. Вы можете безопасно очистить этот код до:

data.rename(index={'Ohio':'Indiana'}, inplace=True)

Я подозреваю, что это рефактор из:

data = data.rename(index={'Ohio':'Indiana'})

Который сделал бы комментарий "всегда возвращает ссылку на фрейм данных" имеет смысл (когда вы используйте inplace он возвращает None, а не фрейм данных!).

Мы используем _ для представления значения, которое нас не волнует. Это условность. Аргумент inplace изменит объект, на который в данный момент указывает data, вместе с методом rename, возвращающим другую ссылку на него. Это утверждение является взятием возвращаемого значения из rename и присвоением его _, предполагая, что мы собираемся выбросить его. Это не будет иметь значения, потому что у нас уже есть переменная, а именно data, которая будет иметь результаты из-за inplace=True.

Согласно комментарию Израэля. rename с inplace=True возвращает None, что делает его совершенно неуместным для назначения _.

, так что ответ на ваш вопрос, нет.