熊猫:检查行是否存在某些值

时间:2014-07-15 14:41:01

标签: python pandas contains

我有一个二维(或更多)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

现在假设我有一个像np.array([2,3])这样的numpy数组,并想检查df中是否有与我的数组内容匹配的行。答案显然应该是正确的,例如。 np.array([1,2])应该返回false,因为A列中没有1,B列中没有2。

当然这很容易,但现在看不到。

3 个答案:

答案 0 :(得分:40)

原来这很简单,以下是这里的工作:

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

也许有人提出了一个更好的解决方案,它允许直接传入数组和列表以匹配。

请注意,df['A'] == 2周围的括号不是可选的,因为&运算符的绑定与==运算符一样强。

答案 1 :(得分:10)

更简单的方法是:

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

答案 2 :(得分:2)

如果您还想返回匹配发生的索引:

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