关于python 3.x:使用`或`b布尔值查询pandas数据框?

Query pandas data frame with `or`b boolean?

本问题已经有最佳答案,请猛点这里访问。

我有一个简单的熊猫数据框架。

1
2
3
4
5
6
import pandas as pd    
x = [5, 10, 20, 30, 5, 10, 20, 30, 5, 10, 20, 30]
y = [100, 100, 200, 200, 300, 300, 400, 400, 500, 500, 600, 600]
users =['mark', 'mark', 'mark', 'rachel', 'rachel', 'rachel', 'jeff', 'jeff', 'jeff', 'lauren', 'lauren', 'lauren']

df = pd.DataFrame(dict(x=x, y=y, users=users)

我想保留数据帧的某些行。让我们说"瑞秋"和"杰夫斯"。我试过df.query

1
df=df.query('users=="rachel"' or 'users=="jeff"')

结果是只有users=="rachel"的数据帧。有没有结合查询的方法?


标准方法是使用按位或运算符|。为了清楚地解释原因,我建议检查一下这个答案。由于python的计算顺序,您还需要在每个条件周围使用括号。

1
2
3
4
5
6
7
8
df[(df.users == 'rachel') | (df.users == 'jeff')]
    users   x    y
3  rachel  30  200
4  rachel   5  300
5  rachel  10  300
6    jeff  20  400
7    jeff  30  400
8    jeff   5  500

使用query,您仍然可以使用or运算符:

1
2
3
4
5
6
7
8
df.query("users=='rachel' | users=='jeff'")
    users   x    y
3  rachel  30  200
4  rachel   5  300
5  rachel  10  300
6    jeff  20  400
7    jeff  30  400
8    jeff   5  500


另一种方法是:

1
df=df.query('users=="rachel"').append(df.query('users=="jeff"'))