2016-07-15 3 views
2

Я читаю «питон для анализа данных» Уэса МакКинни и увидел следующий кодDataFrame модификация Inplace с возвращаемым значением

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

Есть ли причина, чтобы установить INPLACE изменения _?

+0

Это интересно, потому что 'inplace' возвращает' None'. – jezrael

+0

Я подозреваю, что это произошло из рефакторя из 'data = data.rename (index = {'Ohio': 'Indiana'})'. –

+0

Я нашел его в книге на стр. 198. «Если вы хотите изменить набор данных на месте, перейдите в место = Истина: # Всегда возвращает ссылку на DataFrame В [151]: _ = data.rename (index = { 'ОГАЙО': 'ИНДИАНА'}, Inplace = True) В работе [152]: данные Выход [152]: один два три четыре ИНДИАНА 0 1 2 3 КОЛОРАДО 4 5 6 7 Нью-Йорк 8 9 10 – jezrael

ответ

2

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

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

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

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

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

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

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

который сделал бы комментарий «Всегда возвращает ссылку на DataFrame» макияж (когда вы используете inplace, он возвращает None, а не DataFrame!).

+0

Причина, по которой я подозреваю, что это был рефактор, заключается в том, что inplace представляет собой несколько новое ключевое слово по отношению к книге, хотя с тех пор оно уже не в моде. –

1

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

Комментарий от пользователя Jezrael. rename с inplace=True возвращает None, что делает его совершенно неуместным для назначения _.

Таким образом, ответ на ваш вопрос, №

Смежные вопросы