Pandas: проверьте, существует ли строка с определенными значениями

У меня есть двухмерные (или более) панды DataFrame:

>>> import pandas as pd
>>> df = pd.DataFrame([[0,1],[2,3],[4,5]], columns=['A', 'B'])
>>> df
   A  B
0  0  1
1  2  3
2  4  5

Теперь предположим, что у меня есть массив numpy, такой как np.array([2,3]) и хочу проверить, есть ли какая-либо строка в df, соответствующая содержимому моего массива. Здесь ответ должен быть правдивым, но, например. np.array([1,2]) должен возвращать значение false, поскольку в столбце A и 2 в столбце B.

Конечно, это легко, но не вижу его прямо сейчас.

Ответы

Ответ 1

Оказывается, это действительно легко, здесь работает следующая работа:

>>> ((df['A'] == 2) & (df['B'] == 3)).any()
True
>>> ((df['A'] == 1) & (df['B'] == 2)).any()
False

Может быть, кто-то придумает лучшее решение, которое позволяет напрямую проходить в массиве и список столбцов для соответствия.

Обратите внимание, что скобка вокруг df['A'] == 2 не является необязательной, так как оператор & так же силен, как и оператор ==.

Ответ 2

проще:

a = np.array([2,3])
(df == a).all(1).any()

Ответ 3

Если вы также хотите вернуть индекс, в котором встречались совпадения:

index_list = df[(df['A'] == 2)&(df['B'] == 3)].index.tolist()