如何使用“and”过滤数据框?换句话说,如果我有一个名为 m 的数据框,并且它具有 a、b、c、d、e 列,我将如何返回 b 列中的值大于 120 且 c 列中的值大于 7.3 的所有行?
我尝试了这个,但出现错误:
print(m[m['b'] >120, m['c'] ==7.3])
最佳答案
要扩展 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)]
关于python - 根据多列条件过滤 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24347012/