python - 在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 ...您可以提供的任何帮助将不胜感激!
解决方案
您有一个条件列表和相应的值可供选择,以便您可以使用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
并分配该值。
推荐阅读
- laravel - (livewire-datatables)无法访问我与同一模型的两个关系
- delta-lake - 在 Delta 湖上创建金表
- r - 按组保留所有变量的最后一个非缺失观察
- c# - 如果没有从 ac# build 命令安装,则全局安装工具
- google-chrome-extension - 如果存在一行文本,则刷新浏览器扩展
- sed - 如何在 Mac OS 上使用 sed 最后将“^M”替换为“,1”?
- powershell - 在powershell中增加变量
- ansible - 无法将文件传输到 /home/admin/.ansible/tmp/ansible-local-231689549k 谁 - 显示当前登录的用户/AnsiballZ_setup.py:
- ios - SKReceiptRefreshRequest 失败,ASDErrorDomain Code=530
- angular - 导出excel文件而不在角度slickgrid中分组选项