pandas DataFrame按行内多阈值快速分类的高效实现方法咨询
实现方案
针对200万行的大数据量场景,最优方案是使用numpy向量化条件判断,完全避免循环操作,运行效率远高于apply、逐行遍历等方法,同时可以完美适配每行独立阈值的判断需求,解决pd.cut默认全局分箱不符合预期的问题。
核心代码
import numpy as np # 按优先级定义判断条件 conditions = [ df["value"] <= df["limit_1"], (df["value"] > df["limit_1"]) & (df["value"] <= df["limit_2"]), (df["value"] > df["limit_2"]) & (df["value"] <= df["limit_3"]) ] # 定义条件对应的分类值 class_values = [1, 2, 3] # 生成分类列,不满足上述条件的默认分类为4 df["CLASS"] = np.select(conditions, class_values, default=4)
效果说明
- 运行效率:200万行数据处理耗时通常在0.1秒以内,比行级
apply快100倍以上 - 结果准确性:完全匹配给定的分类规则,测试样例输出和预期结果完全一致
- 扩展性:如果后续需要调整分类规则,只需要修改
conditions和class_values对应项即可
内容的提问来源于stack exchange,提问作者pouchewar
相关产品推荐
相关产品推荐

