Как интерпретировать результат логического индекса фрейма данных pandas

#pandas

#pandas

Вопрос:

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

     # sample data for understanding concept of boolean indexing:
    d_f = pd.DataFrame({'x':[0,1,2,3,4,5,6,7,8,9], 'y':[10,12,13,14,15,16,1,2,3,5]})

    # changing index of dataframe:
    d_f = d_f.set_index([list('abcdefghig')])

    # a list of data:
    myL = np.array(range(1,11))

    # loop through data to boolean slicing and indexing:
    for r in myL:
         DF2 = d_f['x'].values == r
  

Результатом приведенного выше кода является:

     array([False,
           False,
           False,
           False,
           False,
           False,
           False,
           False,
           False,
           False],
           dtype=bool
  

Но все значения в myL находятся в d_f[‘x’].значения, кроме 0. Таким образом, похоже, что программа выполняла сопоставление элементов в myL и d_f[‘x’] по принципу «индекс за индексом».значения. Это типичное поведение библиотеки pandas? Если да, может кто-нибудь, пожалуйста, объяснить мне обоснование этого. Заранее благодарю вас.

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

1. «Но все значения в ‘myL’ находятся в d_f[‘x’].значения, кроме ‘0’»… нет, за исключением 10, которое является последним проверяемым значением, поэтому, конечно, все DF2 равно False (последний результат перезаписывает все предыдущие).

Ответ №1:

Как утверждает @coldspeed, вы перезаписываете DF2 на d_f['x'] == 10 , который представляет собой логическую последовательность всех значений False.

Я думаю, что вы пытаетесь сделать это вместо:

 d_f['x'].isin(myL)
  

Вывод:

 a    False
b     True
c     True
d     True
e     True
f     True
g     True
h     True
i     True
g     True
Name: x, dtype: bool