如何筛选DataFrame中指定列数值小于-0.3或大于0.3的行?
问题原因
你的两次代码返回空结果的核心原因是逻辑运算符使用错误:你需要筛选满足「第三列数值大于0.3」或「第三列数值小于-0.3」的行,但两次代码都使用了表示「且」关系的逻辑运算符,不存在数值可以同时满足既大于0.3又小于-0.3,因此返回结果为空。
同时第二种query写法还存在列名引用问题:列名包含空格时需要用反引号包裹列名,否则会触发语法错误。
正确写法
写法1:布尔索引写法
可以选择两种实现方式:
- 使用numpy的
np.logical_or实现逻辑或判断
import numpy as np df_filtered = df[np.logical_or(df["third column"] > 0.3, df["third column"] < -0.3)]
- 使用pandas原生位或运算符
|,注意两侧判断条件必须加括号
df_filtered = df[(df["third column"] > 0.3) | (df["third column"] < -0.3)]
写法2:query写法
将逻辑运算符替换为|,同时用反引号包裹带空格的列名:
df_filtered = df.query("`third column` < -0.3 | `third column` > 0.3")
内容的提问来源于stack exchange,提问作者Nana_marinbio
相关产品推荐
相关产品推荐

