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

如何对含interval[float64]类型列的Pandas DataFrame按指定区间筛选

Pandas Interval类型列筛选解决方案

错误原因说明

  • 第一种写法返回空的原因:distance_bin已经转换为interval[float64]类型,和字符串'(5.0, 6.0]'类型不匹配,自然无法匹配到结果。
  • 第二种写法报错原因:Series对象本身没有left属性,需要通过.dt访问器获取Interval类型列的左右边界属性,同时逻辑运算符&优先级高于比较运算符,需要给单个判断条件加括号避免语法错误。

正确筛选方法

方法1:直接构造目标Interval对象匹配(最直观)

直接构造和目标区间规则完全一致的pd.Interval对象,直接做等值判断即可:

import pandas as pd
# 构造目标区间:左开右闭(5.0,6.0]
target_interval = pd.Interval(5.0, 6.0, closed='right')
# 筛选
df_A = df[df['distance_bin'] == target_interval]

方法2:通过dt访问器获取边界判断

如果需要灵活匹配区间范围,可以通过.dt访问器提取左右边界判断,注意加括号处理逻辑运算优先级:

# 精确匹配(5.0,6.0]区间
df_A = df[(df['distance_bin'].dt.left == 5.0) & (df['distance_bin'].dt.right == 6.0)]
# 按范围规则匹配的写法
df_A = df[(df['distance_bin'].dt.left > 5) & (df['distance_bin'].dt.right <=6)]

方法3:判断值是否在区间内(拓展场景)

如果需要筛选包含某个具体值的所有区间,可以用in判断:

# 筛选所有包含5.5的区间
df_A = df[df['distance_bin'].apply(lambda x: 5.5 in x)]

内容的提问来源于stack exchange,提问作者Serge de Gosson de Varennes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:57:02