如何对DataFrame数值列按区间分类并新增列存储分类结果?
心率数据分箱简化实现方案
最优方案:使用pandas内置pd.cut()分箱
这是最推荐的实现方式,属于pandas原生向量化操作,执行效率远高于循环,代码量极少,且完全匹配你原有分箱规则:
import pandas as pd # 生成分箱边界,对应你需要的10/20/.../280节点 bins = list(range(10, 290, 10)) # 生成对应区间的标签文本 labels = [f"{bins[i]}-{bins[i+1]}" for i in range(len(bins)-1)] # right=True表示分箱规则为左开右闭,和你原有 >左边界 & <=右边界 的规则完全一致 # fillna('') 是为了匹配你原有逻辑,将<=10的心率对应的分类设为空字符串 HR_df1['HRCat'] = pd.cut(HR_df1['HR'], bins=bins, labels=labels, right=True).fillna('')
可选方案:循环实现
如果你需要用循环实现,也可以通过遍历区间边界的方式大幅简化代码,无需手动编写每个区间的判断逻辑:
HR_df1['HRCat'] = '' # 遍历每个区间的左边界,步长为10 for lower_bound in range(10, 271, 10): upper_bound = lower_bound + 10 HR_df1.loc[(HR_df1['HR'] > lower_bound) & (HR_df1['HR'] <= upper_bound), 'HRCat'] = f"{lower_bound}-{upper_bound}"
内容的提问来源于stack exchange,提问作者Huzaifa Arshad
相关产品推荐
相关产品推荐

