python - 根据多列条件过滤 DataFrame

标签 python pandas

如何使用“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/

相关文章:

python - Pandas .agg 函数有哪些?

python - 如何在Python中分配数组大小

python - 将多列列表拆分为单独的行

python - 当满足其余行中的条件时更新 Pandas Dataframe 行中的列(在 SQL UPDATE 中)

python - 使用 pandas json_normalize 展平 JSON 数据

python - 将行添加到 pandas DataFrame 更改 dtype

python - 检测 tkinter 3 中小部件边框的点击

python - 如何合并这两列? Pandas

Python Flask 错误代码 400,消息请求版本错误

pandas - 我想将 pandas Timedelta 转换为格式为字符串