是否有相当于在熊猫中使用函数`all`构建的python?

时间:2017-03-29 21:16:03

标签: python pandas conditional-statements subset built-in

我正在像这样定制一个pandas数据帧df

df = df[
    (df.value1 >= threshold1) &
    (df.value2 >= threshold2) &
    (df.value3.isin(list3))
    ]

Python具有内置函数all,它允许使用以下语法:

if all([
    value1 > threshold1,
    value2 > threshold2,
    value3 in list3,
    ]):

而不是:

if (
    value1 > threshold1 and
    value2 > threshold2 and
    value3 in list3,
    ):

Pandas在Python中有类似于all的东西吗?感谢。

此外,这是基于多种条件对Pandas数据帧进行子集化的最快方法吗?

1 个答案:

答案 0 :(得分:4)

@juanpa.arrivillaga已经为您提供了关于Pandas中布尔索引的非常好的解释。

我想给你一个更好的选择 - DataFrame.query()方法:

df.query("value1 > @threshold1 and value2 > @threshold2 and value3 in @list3")

演示:

In [138]: df = pd.DataFrame(np.random.randint(1, 10, (10, 3)),
                            columns=['value1','value2','value3'])

In [139]: df
Out[139]:
   value1  value2  value3
0       7       9       1
1       4       1       3
2       3       8       8
3       2       8       9
4       9       2       7
5       5       8       9
6       4       2       9
7       7       2       5
8       6       3       5
9       9       1       5

In [140]: threshold1 = 2

In [141]: threshold2 = 4

In [142]: list3 = [1,9]

In [143]: df.query("value1 > @threshold1 and value2 > @threshold2 and value3 in @list3")
Out[143]:
   value1  value2  value3
0       7       9       1
5       5       8       9