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

如何正确使用pd.cut高效实现街道号的批量分箱?

解决方法

不需要手动构建超长的bins和labels,有两种简便方式实现需求:

方法一:直接数学计算(最高效)

利用整数除法的特性,一行代码就能生成目标列,比pd.cut更简洁高效:

# 生成数值型BIN
df['BIN'] = ((df['STREET_NO'] - 1) // 300) * 300

# 如果需要字符串类型的BIN,加astype转换
df['BIN'] = (((df['STREET_NO'] - 1) // 300) * 300).astype(str)

逻辑说明:

  • 减1是为了让300刚好归入0的区间(否则300//300=1会得到300,不符合需求)
  • 整除300得到区间的索引,再乘以300就得到对应区间的起始值

方法二:结合numpy自动生成bins(适配pd.cut)

如果坚持想用pd.cut,可以用numpy.arange自动生成所有区间分界:

import numpy as np

# 生成从0开始、步长300、覆盖到99999以上的bins数组
bins = np.arange(0, 99999 + 300, 300)
# labels直接取bins的前n-1个元素,转成字符串
labels = bins[:-1].astype(str)

# 用pd.cut分箱,include_lowest=True确保左边界包含第一个区间的最小值
df['BIN'] = pd.cut(x=df['STREET_NO'], bins=bins, labels=labels, include_lowest=True)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:25:25