创建一列来对Python中的数值进行分类
问题描述
我有一个名为df的pythonDataFrame,它将客户的BMI作为数字包含在一个名为‘BMI’的列中。我想在数据框中添加一个名为‘BMI_CAT’的新列,它是基于数值的BMI类别(即:<;18.5表示体重不足,18.5到24.9表示健康,依此类推)。
这就是我尝试的方法,但不起作用。它不喜欢使用"for"。
df['bmi_cat'] = for i in df['bmi'] :
if i < 18.5 :
df['bmi_cat'] == 'underweight'
elif i >= 18.5 and i < 25 :
df['bmi_cat'] == 'healthy'
elif i >= 25 and i < 30 :
df['bmi_cat'] == 'overweight'
else :
df['bmi_cat'] == 'obese'
我正在学习python……如果您能提供任何帮助,我将不胜感激!
解决方案
您有一个条件列表和相应值可供选择,以便您可以使用np.select
:
import numpy as np
bmi = df["bmi"]
cond_list = [bmi < 18.5, bmi < 25, bmi < 30, bmi >= 30]
choice_list = ["underweight", "healthy", "overweight", "obese"]
df["bmi_cat"] = np.select(cond_list, choice_list)
它从左到右检查cond_list
中的条件,只要找到匹配项,就在choice_list
中查找并分配该值。
相关文章