我正在尝试搜索多个列,现在正在获取结果,但是如果匹配,我真的只需要一个true / false。有办法吗?
这里是一个示例:
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(10000, 5)*10, columns=list('ABCDE')).astype(int)
df
A B C D E
0 1 9 2 9 2
1 5 2 1 6 2
2 8 6 9 8 5
3 0 6 8 5 5
4 1 2 4 8 4
... ... ... ... ... ...
9995 9 3 4 9 0
9996 2 4 1 3 7
9997 4 5 2 4 9
9998 7 5 0 3 2
9999 3 5 0 5 7
10000 rows × 5 columns
df[((df['A'] == 0) & (df['B'] == 1))]
A B C D E
5 0 1 7 0 6
105 0 1 2 5 9
375 0 1 0 0 3
688 0 1 8 0 9
770 0 1 7 9 5
... ... ... ... ... ...
9706 0 1 1 7 4
9710 0 1 4 4 9
9789 0 1 3 4 3
9810 0 1 1 1 5
9987 0 1 2 3 3
89 rows × 5 columns
如果结果不存在于数据帧中,而不是获取行匹配的数据,我会得到true还是false?
答案 0 :(得分:1)
您的(df['A'] == 0) & (df['B'] == 1)
等同于较短的df[['A','B']].eq([0,1]).all(1)
。
您的问题如果结果存在,我可以是对还是错等同于检查任何True
的序列。所以,您正在寻找其中一个吗?
((df['A'] == 0) & (df['B'] == 1)).any()
或:
df[['A','B']].eq([0,1]).all(1).any()