首页 > 解决方案 > 在python中创建一个列来对数值进行分类

问题描述

我在 python 中有一个名为 df 的数据框,其中包含客户的 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 ...您可以提供的任何帮助将不胜感激!

标签: pythonpandasdataframecategories

解决方案


您有一个条件列表和相应的值可供选择,以便您可以使用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并分配该值。


推荐阅读