В чем разница между df[columns]
и df.loc[:,columns]
, как как lvalue, так и rvalue?различные способы доступа к столбцам pandas.DataFrame
Они кажутся взаимозаменяемыми с поведенческой POV:
>>> df = pd.DataFrame({'x':[1,2,3],'y':['a','b','c']})
>>> df[['x']].equals(df.loc[:,['x']])
True
>>> df.loc[:,'z'] = df.x.apply(str) + df.y
>>> df['a'] = df.x.apply(str) + df.y
>>> df
x y z a
0 1 a 1a 1a
1 2 b 2b 2b
2 3 c 3c 3c
Я знаю, что есть документ, где-то ответить на это в мучительных деталях (и я уверен, что я даже видел его один раз, но ссылка будет хорошо), но я смотрю «резюме», так сказать.
В частности: является одним ярлыком для другого или существует какая-то смысловая разница?
PS. Это вызвано сообщением
~/.virtualenvs/Уилбур/Библиотека/python2.7/сайт-пакеты/панд/ядро / indexing.py: 465: SettingWithCopyWarning: Значение пытается установить на копию фрагмента из DataFrame. Попробуйте использовать .loc [row_indexer, col_indexer] = значение вместо
Я не понимаю ваш вопрос. вы хотите знать, что происходит здесь под капотом? –
yes - как, который должен быть быстрее/дешевле/безопаснее и c – sds
Я думаю, что фильтрация 'ix' выполняется быстрее, но требуется больше тестирования, если вам нужно быть на 100% уверенным –