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

у меня есть двумерный (или более) фрейм данных pandas, как это:

>>> 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, так как нет строки с 1 в столбце A и 2 в столбце B.

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

3 ответов


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

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

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

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


более простой способ:

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

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

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