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

如何根据数值范围插入标签列?pandas insert条件赋值语法报错解决

问题原因与解决方案

报错原因

  1. 语法层面:Python的三元表达式必须完整遵循返回值1 if 条件 else 返回值2的结构,你只写了if分支没有指定else分支的返回值,直接触发语法错误。
  2. 逻辑层面:data3["Active"]是pandas的Series序列对象,普通的Python三元表达式无法直接处理序列的批量条件判断,即便补全else也会返回系列真值模糊的错误。

解决代码

单条件双等级场景

如果仅需要划分「大于91874为Severe,其余为其他等级」,用numpy.where实现向量化判断,性能最优:

import numpy as np

# 可自行修改else后的返回值,比如改为"Normal"或者其他自定义内容
data3.insert(1, column="Level", value=np.where(data3["Active"] > 91874, "Severe", "Normal"))

多区间多等级场景

如果需要按多个区间划分不同Level(比如<1000为Low、1000-10000为Medium、>10000为Severe),用pandas.cut更易维护:

import pandas as pd

# 自定义区间边界与对应等级标签,区间范围可按需调整
bins = [-1, 1000, 10000, float("inf")]
level_labels = ["Low", "Medium", "Severe"]

data3.insert(1, column="Level", value=pd.cut(data3["Active"], bins=bins, labels=level_labels))

效果说明

以你提供的数据集为例,执行单条件代码后,只有Active值为239338的Kerala行Level会被赋值为Severe,其余行均为Normal。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:15:01