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
Не обязательно, поскольку &
оператор связывает так же сильно, как ==
оператора.
Если вы также хотите вернуть индекс, в котором произошли совпадения:
index_list = df[(df['A'] == 2)&(df['B'] == 3)].index.tolist()