如何根据DataFrame指定列的数值阈值新增分类列并按条件赋值
实现方案
以下两种pandas标准写法都可以实现需求,可根据自己的使用习惯选择:
- 方法1:
numpy.where实现(推荐,处理大规模数据时性能更好)
导入numpy后一行代码即可完成整列的条件赋值:import numpy as np df['B'] = np.where(df['A'] >= 400, 'nonNormal', 'Normal') - 方法2:pandas原生loc索引赋值,无需额外导入numpy
先给整列设置默认值,再针对符合条件的行做值替换,逻辑直观易读:# 先给B列所有行赋默认值 df['B'] = 'Normal' # 筛选A列值大于等于400的行,修改对应B列的值 df.loc[df['A'] >= 400, 'B'] = 'nonNormal'
执行任意一段代码后,运行head(df)就能得到你预期的输出结果:
A B 1 200 Normal 2 230 Normal 3 400 nonNormal 4 638 nonNormal 5 502 nonNormal 6 387 Normal
注意:判断条件不要写错边界,题目要求A列值等于400时B列取
nonNormal,不要把>=误写为>。
内容的提问来源于stack exchange,提问作者PythonNoob
相关产品推荐
相关产品推荐

