Как и когда использовать индексирование цепей в Python Pandas? - PullRequest
0 голосов
/ 26 июня 2019

Я прохожу курс Data Science по анализу данных в Python.В какой-то момент курса профессор говорит:

Вы можете объединять операции в цепочку.Например, мы могли бы переписать запрос для всех затрат Store 1 как df.loc ['Store 1'] ['Cost']. Это выглядит довольно разумно и дает нам желаемый результат. Но объединение в цепочку может потребовать некоторых затрат, и его лучше избегать, если вы можете использовать другой подход. В частности, объединение в цепочку приводит к тому, что Pandas возвращает копию DataFrame вместо представления DataFrame.Для выбора данных это не имеет большого значения, хотя это может быть медленнее, чем необходимо.Однако если вы меняете данные, это важное различие и может стать источником ошибки.

Позже он описывает цепную индексацию как:

Как правило, pandas может вернуть копию представления в зависимости от NumPy

Итак, он предлагает использовать многоосную индексацию (df.loc['a', '1']).

Мне интересно, всегда ли желательно избегать цепной индексации или есть конкретные случаи использования для нее, где она светит?

Кроме того, если это правда, что он может вернуть копию представления или представления (в зависимости от NumPy), от чего именно это зависит, и могу ли я повлиять на него, чтобы получить желаемый результат?

Я нашел этот ответ , в котором говорится:

Когда вы используете df ['1'] ['a'], вы первый раз получаете доступобъект серии s = df ['1'], а затем доступ к элементу серии s ['a'], что приводит к двум вызовам __getitem__, оба из которых сильно перегружены (обрабатывают множество сценариев, таких как нарезка, индексация логической маскии т. д.).

... что делает цепную индексацию всегда плохой.Мысли?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...