You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pandas DataFrame中按条件筛选数值而非返回布尔值

问题解答

1. 为什么返回布尔值?

你的代码执行逻辑是先通过df.loc[df['parallax'] >= 300, 'parallax']筛选出parallax列中≥300的所有数值,再对这些数值执行<=900的比较判断,最终返回的是每个元素是否满足该条件的布尔值Series,而非筛选后的数据集。

2. 如何获取符合条件的数值?

需要将两个条件组合作为行筛选条件传入loc,注意要用括号包裹每个条件(因为&的优先级高于比较运算符):

# 获取包含符合条件记录的完整DataFrame
new_df = df.loc[(df['parallax'] >= 300) & (df['parallax'] <= 900)]

# 若仅需parallax列的数值
parallax_values = df.loc[(df['parallax'] >= 300) & (df['parallax'] <= 900), 'parallax']

NaN值由于比较结果为False,会被自动排除在结果之外。

3. 更优实现方式

使用pandas内置的between方法,语法更简洁直观,默认包含两端边界值:

# 获取符合条件的整行数据
new_df = df[df['parallax'].between(300, 900)]

# 用loc写法更明确(推荐)
new_df = df.loc[df['parallax'].between(300, 900)]

# 若需重置结果索引,可追加reset_index
new_df = df.loc[df['parallax'].between(300, 900)].reset_index(drop=True)

内容的提问来源于stack exchange,提问作者user23141461

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 12:48:18