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

使用.loc与np.select按条件创建DataFrame新列失败,求解决

问题分析与解决方法

问题原因

你代码里的conditions列表使用to_test.loc[...]返回的是符合条件的DataFrame子集,但np.select要求每个条件必须是与原DataFrame行数一致的布尔数组(即每个元素是True/False,标记该行是否满足条件),这是导致代码无法运行的核心问题。

修正方案1:修复np.select的条件列表

直接使用布尔表达式生成布尔数组,替换原有的.loc调用:

import numpy as np

# 生成布尔数组形式的条件列表
conditions = [
    (to_test['averageRating'] >= 0.0) & (to_test['averageRating'] <= 3.3),
    (to_test['averageRating'] >= 3.4) & (to_test['averageRating'] <= 6.6),
    (to_test['averageRating'] >= 6.7) & (to_test['averageRating'] <= 10)
]

values = ['group1', 'group2', 'group3']

# 可选:添加default参数处理超出0-10范围的异常评分
to_test['group'] = np.select(conditions, values, default='unknown')

to_test.head()

修正方案2:使用pd.cut更简洁实现分箱

对于这种连续数值的区间分组,pandas的pd.cut是更高效简洁的方案:

import pandas as pd

# 定义分箱边界和对应分组标签
bins = [0, 3.3, 6.6, 10]
labels = ['group1', 'group2', 'group3']

# include_lowest=True 确保第一个区间包含最小值0.0
to_test['group'] = pd.cut(to_test['averageRating'], bins=bins, labels=labels, include_lowest=True)

to_test.head()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:30:51