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

如何为Pandas DataFrame指定列创建区间新列?是否有更高效实现方案?

高效实现方案

你可以直接用Pandas内置的pd.cut()方法实现需求,这是专门用于连续值分箱打标签的工具,相比多次loc条件赋值的写法,代码更简洁、执行效率更高,尤其是数据量较大时向量化操作的优势会非常明显。

匹配你需求的代码实现

import pandas as pd

# 定义分箱边界,最后加30.1是为了单独匹配等于30的数值
bins = [5, 10, 15, 20, 25, 30, 30.1]
# 定义每个区间对应的标签,顺序和bins划分出的区间一一对应
labels = ['<10-5]', '<15-10]', '<20-15]', '<25-20]', '<30-25]', '[30]']

# right=True表示区间为左开右闭,完全匹配你原有的区间判断规则
df['INTERVAL'] = pd.cut(df['AVERAGE'], bins=bins, labels=labels, right=True)

自动生成区间的方法

如果你不需要自定义区间标签,pd.cut()会自动生成标准区间格式的标识,示例如下:

# 自动生成类似(25, 30]的标准区间标签
df['INTERVAL'] = pd.cut(df['AVERAGE'], bins=bins, right=True)

如果连区间划分规则也不需要手动指定,想要按分位数自动划分等样本量的区间,可以使用pd.qcut()方法,适合需要均衡各区间样本数量的场景。

注意事项

如果你的数据集存在小于5或者大于30的数值,可以调整bins的边界适配,比如把最小边界设为-float('inf')、最大边界设为float('inf'),再对应补充标签即可覆盖所有取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:27:02