Pandas dataframe.loc : что означает «Логический список той же длины, что и ось строк»?

#python #python-3.x #pandas #dataframe

#python #python-3.x #pandas #dataframe

Вопрос:

В документации Pandas есть этот Boolean list with the same length as the row axis пример, вот так:

 >>> df = pd.DataFrame([[1, 2], [4, 5], [7, 8]],
...      index=['cobra', 'viper', 'sidewinder'],
...      columns=['max_speed', 'shield'])
>>> df
            max_speed  shield
cobra               1       2
viper               4       5
sidewinder          7       8


>>> df.loc[[False, False, True]]
            max_speed  shield
sidewinder          7       8

  

Может кто-нибудь, пожалуйста, объяснить, как df.loc[[False, False, True]] работает, чтобы показать результат, пожалуйста?

Спасибо.

Комментарии:

1. [False, False, True] напрямую интерпретирует строку 0 = False, строку 1 = False и строку 2 = True, следовательно, возвращает 3-ю (2-ю, поскольку индексация начинается с 0) строку, на самом деле я не думаю, что вам нужно loc здесь

2. Пожалуйста, также обратитесь к документам для логической индексации

3. @anky. Спасибо, теперь я понимаю. Не могли бы вы опубликовать это в качестве ответа, чтобы я мог дать вам преимущество. Да, я просмотрел документы, в них нет объяснения этого примера.

4. zabop опубликовал аналогичный ответ. Я думаю, вы должны вознаградить их за ответ 🙂

Ответ №1:

df[[False,False,True]] возвращает то же самое, что и df.loc[[False, False, True]] .

df[[False,False,True]] более интуитивно понятен и может быть интерпретирован как: не возвращайте первую и вторую (т. е. первую и вторую False ), возвращайте третью (т. Е. третья — это True ) строку.

В документации смотрите пункт маркера:

  • Логический массив той же длины, что и разрезаемая ось, например [True, False, True].