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

如何在Python Pandas中基于DataFrame列值创建区间分组新列?

Pandas按自定义区间生成分组字符串列的实现方法

问题说明

现有如下Pandas DataFrame(col1为float类型):

col1
------
0.04
0.09
100.00
31.34
55.02
80.00

需要新增字符串类型列col2,将col1的值按以下自定义区间分组:

0-10
11-20
21-30
31-40
41-50
51-60
71-80
81-90
91-100

最终目标结果:

col1   | col2
-------|------
0.04   | 0-10
0.09   | 0-10
100.00 | 91-100
31.34  | 31-40
55.02  | 51-60
80.00  | 71-80

实现代码

可以使用Pandas的pd.cut()方法完成分箱分组,步骤如下:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({'col1': [0.04, 0.09, 100.00, 31.34, 55.02, 80.00]})

# 定义区间边界:遵循左开右闭规则,最后一个边界设为101以包含100.00
bins = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 101]
# 定义与区间对应的标签,跳过无需求的61-70区间
labels = ['0-10', '11-20', '21-30', '31-40', '41-50', '51-60', '71-80', '81-90', '91-100']

# 执行分箱并生成col2,include_lowest=True确保左边界值被正确包含
df['col2'] = pd.cut(df['col1'], bins=bins, labels=labels, include_lowest=True)

# 将category类型转换为string类型(按需选择)
df['col2'] = df['col2'].astype(str)

print(df)

关键说明

  • bins的设置:默认左开右闭,通过include_lowest=True让第一个区间包含左边界(0),确保0.04这类小值被分到0-10区间;最后一个边界设为101,保证100.00能被纳入91-100区间。
  • 无需求区间处理:由于需求跳过了61-70区间,若后续数据出现该范围的值,col2会显示NaN,可根据实际业务补充对应处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:24:13