pandas.series.between()是布尔索引工具,返回true/false数组,需配合方括号筛选;默认inclusive='both',支持日期和数值,nan返回false,非数值类型报typeerror。

直接说结论: pandas.Series.between() 是个布尔索引工具,它本身不筛选数据,只返回 True/False,必须配合方括号 [] 才能真正过滤行。
为什么用 between() 而不是 >= 和 ?
它默认包含边界(inclusive='both'),写法更紧凑,语义更清晰;尤其在链式操作中可读性更好。但要注意:它只适用于一维 Series,不能直接用于 DataFrame 整体——得先选列。
- 错误写法:
df.between(10, 20)→ 报错AttributeError: 'DataFrame' object has no attribute 'between' - 正确写法:
df[df['age'].between(10, 20)] - 如果想对多列分别判断,得逐列调用,比如
df[df['a'].between(1,5) & df['b'].between(10,15)](注意用&而不是and)
inclusive 参数怎么选?边界到底包不包含?
这个参数控制左右边界的开闭,默认是 'both',但容易被忽略的是它的三个合法值:'both'、'neither'、'left' 或 'right'。传错字符串会直接报 ValueError。
Python 3.14.2是Python编程语言在2025年12月5日发布的稳定版本,属于3.14系列的第二个维护更新。该版本包含了18项修复,重点解决了多进程、数据类及正则表达式等模块的回归问题,并修复了CVE-2025-12084等安全漏洞。此版本标志着自由线程模式(移除GIL)正式获得官方支持,是Python发展的重要里程碑。
-
series.between(5, 10, inclusive='both')→ 等价于(series >= 5) & (series -
series.between(5, 10, inclusive='neither')→ 等价于(series > 5) & (series -
inclusive='left'表示包含左边界、不包含右边界,即>= 5 and
空值(NaN)和非数值类型会怎样?
between() 对 NaN 统一返回 False,这点和 >= 比较一致;但如果 Series 含非数值(比如字符串混入数字列),会抛出 TypeError,提示无法比较。
- 含
NaN时:结果中对应位置为False,不影响布尔索引逻辑 - 类型混合时:必须先清洗,例如用
pd.to_numeric(series, errors='coerce')把非法值转成NaN - 时间类型也支持:
series.dt.date.between(date1, date2)可用于日期区间判断
最常被跳过的细节是:它返回的是新布尔数组,原 Series 不变;而且一旦涉及多个条件组合,括号不能省——df[(df.a.between(1,3)) & (df.b > 5)] 中外层括号和 & 都缺一不可。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!










