如何使用np.where或其他方法实现三类数据分类,解决运行报错
报错根因
np.where仅支持三元逻辑(条件、满足返回值、不满足返回值),你传入了4个参数不符合语法要求,三分类需要嵌套np.where实现- Pandas的Series是数组结构,不能用Python原生的
and做逻辑判断,必须用按位与符号&,且每个判断条件需要用小括号包裹,否则会触发数组真值歧义的报错 - 你代码中第二个条件的变量名写的是
data["Active"],和前面的data2不一致,也会触发变量未找到的报错
修复方案
方案一:嵌套np.where实现
data2.insert(1, column = "Level", value = np.where(data2["Active"] > 9700, "Severe", np.where((data2["Active"] < 9700) & (data2["Active"] > 4850), 'Less_Severe','Not_Severe')) )
方案二:用pd.cut做区间分箱,多分类场景下代码更易维护
import pandas as pd # 定义区间边界和对应分类标签,right=False表示区间左闭右开,可根据需求调整 bins = [0, 4850, 9700, float('inf')] labels = ["Not_Severe", "Less_Severe", "Severe"] data2.insert(1, column="Level", value=pd.cut(data2["Active"], bins=bins, labels=labels, right=False))
内容的提问来源于stack exchange,提问作者Gunther
相关产品推荐
相关产品推荐

