如何自定义分箱区间并确保右端点闭合(如 [190, 200])
技术百科
碧海醫心
发布时间:2026-01-27
浏览: 次 本文介绍在 pandas 中实现非标准分箱(尤其是让最后一个区间为闭区间 `[190, 200]`)的实用方法:先用 `pd.cut(..., right=false)` 构建左闭右开基础分箱,再通过布尔掩码将精确等于 200 的值强制归入目标闭区间。
在数据预处理中,分箱(binning)是常见操作,但 pd.cut 默认仅支持统一的开闭性(全部左闭右开或左开右闭),无法直接定义混合边界——例如前四个区间为左闭右开 [a, b),而最后一个区间需为左闭右闭 [190, 200]。此时,单纯调整 right 参数无法满足需求,需结合后处理实现精准控制。
核心思路是:分两步走
- 使用 pd.cut(..., right=False) 按左闭右开规则划分所有区间(包括 [190, 200));
- 单独识别值恰好等于 200 的样本,并用 .mask() 将其对应分箱标签替换为 '[190, 200]'。
以下为完整可运行示例:
import pandas as pd # 构造测试数据:100.0 到 200.3,步长 0.1(含精确的 200.0) s = pd.Series(range(1000, 2004)).div(10) # 100.0, 100.1, ..., 200.0, 200.1, ... # 定义分箱边界(5个区间 → 6个端点) bins = [100, 135, 160, 175, 190, 200] labels = ['[100, 135)', '[135, 160)', '[160, 175)', '[175, 190)', '[190, 200]'] # 第一步:标准左闭右开分箱(此时 200 落入 NaN,因超出 [190, 200)) cut_result = pd.cut(s, bins=bins, labels=labels, right=False) # 第二步:定位值为 200 的位置,并覆盖标签 cond = s == 200.0out = cut_result.mask(cond, '[190, 200]') print(out.iloc[998:1003]) # 查看关键片段
输出中可见:
- 199.9 → [190, 200](原属 [190, 200),被 pd.cut 正确分配)
- 200.0 → [190, 200](经 .mask() 强制修正)
- 200.1 及以上 → NaN(超出最大边界,符合预期)
⚠️ 注意事项:
- 若数据中存在大于 200 的值(如示例中的 200.1),它们将默认返回 NaN,可根据业务需要额外处理(如追加 include_lowest=True 或扩展 bins);
- labels 长度必须比 bins 少 1,否则报错;
- 使用 mask() 时确保条件向量 cond 与 cut_result 索引对齐(本例中天然一致);
- 若需保留数值型结果而非字符串标签,可改用 pd.cut(..., retbins=False) + 自定义 pd.IntervalIndex 映射,但复杂度显著上升——对多数场景,布尔掩码法更简洁可靠。
该方案兼顾准确性与可读性,是处理“混合区间闭合性”问题的推荐实践。
# 将其
# 尤其是
# 第二步
# 自定义
# 而非
# 先用
# 字符串
# 报错
# 布尔
# 掩码
# pandas
# 为左
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- mac本地php环境如何开启curl_curl扩展
- 如何在 Python 测试中动态配置 @backo
- Drupal 中 HTML 链接被双重转义导致渲染
- Windows10电脑怎么设置电源按钮_Win10
- Win11怎么设置默认输入法 Win11固定中文输
- php中常量能用::访问吗_类常量与作用域操作符使
- Win11怎么更改盘符_Win11磁盘管理修改驱动
- Win11如何设置文件关联 Win11修改特定文件
- C++如何将C风格字符串(char*)转换为std
- 为什么Go需要go mod文件_Go go mod
- Win11如何设置鼠标灵敏度_Win11鼠标灵敏度
- 如何使用Golang开发基础文件下载功能_Gola
- Win11触摸板没反应怎么办_开启Win11笔记本
- Win11 C盘满了怎么清理 Win11磁盘清理和
- C#如何使用XPathNavigator高效查询X
- c++ nullptr与NULL区别_c++11空
- Win11怎么调整屏幕亮度_Windows 11调
- Win11如何开启telnet服务 Win11启用
- PHP主流架构如何处理会话管理_Session与C
- 如何使用Golang反射创建map对象_动态生成键
- c++23 std::expected怎么用 c+
- c++如何连接Redis c++ hiredis库
- Win10电脑C盘红了怎么清理_Windows10
- Win11怎么更改电脑密码_Windows 11修
- 如何在Golang中验证模块完整性_Golangg
- 如何在 IIS 上为 ASP.NET 6 应用排除
- Win11资源管理器卡顿怎么办 Win11文件资源
- PHP cURL GET请求:正确设置认证与自定义
- c++怎么处理多线程死锁_c++ lock_gua
- c++获取当前时间戳_c++ time函数使用详解
- 如何在Golang中处理URL参数_Golang
- 如何在Golang中使用内置函数_Golangle
- Win11怎么关闭自动调节屏幕亮度_Windows
- Windows10系统怎么查看CPU温度_Win1
- Win11怎么关闭通知中心_Windows11系统
- Python文本编码与解码_跨平台解析说明【指导】
- Win11怎么退出高对比度模式_Win11取消反色
- c# 服务器GC和工作站GC的区别和设置
- c# Task.ConfigureAwait(tr
- mac怎么安装pip_MAC Python pip
- Django 密码修改后会话失效的解决方案
- Win11怎么关闭定位服务 Win11禁止应用获取
- 如何在Golang中捕获HTTP服务器错误_Gol
- Python变量绑定机制_引用模型解析【教程】
- php订单日志怎么在swoole写_php协程sw
- Win11怎么关闭资讯和兴趣_Windows11任
- Windows 11如何查看系统激活密钥_Wind
- 如何解决Windows字体显示模糊的问题?(Cle
- Win10 BitLocker加密教程 Win10
- 如何使用正则表达式提取以编号开头、后跟多个注解的完


QQ客服