如果多列搜索匹配,熊猫返回true吗?

时间:2020-10-14 14:38:52

标签: python pandas

我正在尝试搜索多个列,现在正在获取结果,但是如果匹配,我真的只需要一个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?

1 个答案:

答案 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()