#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