根据多个列标准过滤DataFrame

时间:2014-06-22 00:13:05

标签: python pandas

如何使用'和'过滤数据框?换句话说,如果我有一个名为m的数据框并且它有a,b,c,d,e列,我将如何返回列b中的值大于120且列c = 7.3中的值的所有行?

我尝试了这个但是我收到了一个错误:

print(m [m ['b']> 120,m ['c'] == 7.3])

2 个答案:

答案 0 :(得分:2)

要扩展GoBrewers14的答案,你需要用括号括起来克服python中运算符的求值顺序。

例如,下一个语句失败:

In [3]: 1 > 0 & 'a' < 'b'
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-3-5d58a7b0bade> in <module>()
----> 1 1 > 0 & 'a' < 'b'

TypeError: unsupported operand type(s) for &: 'int' and 'str'

因为python首先评估0 & 'a'。这就是为什么你需要用括号括起语句才有意义:

In [4]: (1 > 0) & ('a' < 'b')
Out[4]: True

简而言之,您正在寻找:

m[(m['b'] > 120) & (m['c'] == 7.3)]

答案 1 :(得分:0)

>>> mask = (m.b > 120) & (m.c == 7.3)
>>> m[mask]