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

Python中如何将pandas数据列的数值按指定区间归类打标签?

Pandas 数值区间分类实现方案

直接使用pandas内置的pd.cut()分箱函数即可完成需求,无需手动编写判断条件或循环,代码如下:

import pandas as pd

# 构造示例数据集,实际使用时替换为自己的df即可
data = {'duration_ms': [3203, 4583, 7789, 189654, 512300, 6523, 42358]}
df = pd.DataFrame(data)

# 定义区间边界,单位为ms,可根据需求灵活调整
bins = [0, 100000, 150000, 200000, 250000, 300000, 350000, 400000, 450000, 500000, 550000, 600000]
# 定义区间对应的标签,和上面的bins顺序一一对应
labels = ['0k~100k', '100k~150k', '150k~200k', '200k~250k', '250k~300k',
          '300k~350k', '350k~400k', '400k~450k', '450k~500k', '500k~550k', '550k~600k']

# 执行分箱,right=False代表区间为左闭右开,符合 >=左边界 且 <右边界 的判断规则
df['duration_cat'] = pd.cut(df['duration_ms'], bins=bins, labels=labels, right=False)

# 输出结果验证
print(df)

运行输出结果

duration_ms duration_cat
0         3203      0k~100k
1         4583      0k~100k
2         7789      0k~100k
3       189654    150k~200k
4       512300    500k~550k
5         6523      0k~100k
6        42358      0k~100k

之前代码错误说明

  • 第一种字典定义写法:pandas序列的布尔运算不能使用Python原生的and/or,需要用&/|,且每个判断条件必须用括号包裹,同时逐一定义区间的方式维护成本极高,不推荐使用。
  • 第二种循环写法:遍历逻辑错误,for i in df['duration_cat']取出的i是字段值不是索引,直接用df['duration_cat'][i]取值会报错,同时循环内的return、字典赋值逻辑完全不符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 02:45:04