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

DataFrame数值分组报错:将Values列划分为low/middle/high三类的问题

问题解决方法

错误原因分析

你的代码报错核心有两个问题:

  • 函数参数不能用字符串 "Values",这是非法的参数命名方式,需改用普通变量名(比如 val)
  • 判断条件里把字符串 "Values"/'Values' 和数字比较,会触发类型错误——字符串与数字无法直接比较大小

修正后的自定义函数方法

先修复函数逻辑,再通过 apply 生成新分类列:

import pandas as pd

# 构造你的DataFrame
data = {
    'Datapoint': [1,2,3,4,5,6,7,8,9,10],
    'Values': [0.2,0.8,0.4,0.1,1.0,0.6,0.7,0.2,0.5,0.1]
}
df = pd.DataFrame(data)

# 修正后的分类函数
def categorize_values(val):
    if val > 0.75:
        return 'high'
    elif val < 0.25:
        return 'low'
    else:
        return 'middle'

# 新增分类列
df['Category'] = df['Values'].apply(categorize_values)

更高效的pandas内置方法(推荐)

对于批量数据处理,用 pd.cut 比自定义函数+apply 效率更高,尤其适合大数据集:

# 定义区间边界和对应标签
bins = [-float('inf'), 0.25, 0.75, float('inf')]
labels = ['low', 'middle', 'high']

# 生成分类列
df['Category'] = pd.cut(df['Values'], bins=bins, labels=labels, include_lowest=True)

最终结果

处理后DataFrame会新增Category列,内容如下:

DatapointValuesCategory
10.2low
20.8high
30.4middle
40.1low
51.0high
60.6middle
70.7middle
80.2low
90.5middle
100.1low

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:55:18