如何为Pandas现有min max筛选逻辑新增数值上限规则
实现方案
你可以先使用clip方法对Average Parcels字段做上限18的截断处理,再用截断后的结果做奖金核算的判断条件即可,实现代码如下:
# 写法1:拆分步骤更易读 # 对平均配送包裹数做18封顶处理,超过18的统一替换为18 capped_average = df['Average Parcels'].clip(upper=18) # 仅当封顶后的平均包裹数≥10时核算奖金,否则奖金为0 df['Bonus'] = df['Delivered'].mul(0.14).where(capped_average >= 10, 0)
也可以合并为一行写法:
# 写法2:一行实现 df['Bonus'] = df['Delivered'].mul(0.14).where(df['Average Parcels'].clip(upper=18) >= 10, 0)
逻辑说明
- 平均配送包裹数<10的快递员,依然按规则发放0奖金,和原逻辑一致
- 平均配送包裹数处于[10,18)区间的快递员,奖金核算逻辑和原逻辑完全一致
- 平均配送包裹数≥18的快递员,截断后按18核算,满足≥10的准入条件,可以正常按配送总单量计算奖金,符合需求
内容的提问来源于stack exchange,提问作者cchev
相关产品推荐
相关产品推荐

