如何在Pandas中将计算结果向上取整为指定数值的倍数?
解决Pandas中向上取整到指定倍数的需求
要实现你要的效果——对正数的需求缺口向上取整为Case_Qty的倍数,负数缺口设为0,可以用Numpy的np.ceil配合除法、乘法来模拟Excel的CEILING函数,直接嵌套进原有的np.where逻辑里就行。
修改后的代码
import numpy as np import pandas as pd Months_of_inventory = 2 Case_Qty = 20 # 先计算需求缺口 demand_gap = df['Avg_Sales'] * Months_of_inventory - df['On_Hand_Inventory'] # 对正数缺口向上取整为Case_Qty的倍数,负数则设为0 df['Order'] = np.where( demand_gap <= 0, 0, np.ceil(demand_gap / Case_Qty) * Case_Qty )
补充说明
如果你的demand_gap是浮点数,需要确保最终结果为整数,可以在np.ceil后加上.astype(int):
df['Order'] = np.where( demand_gap <= 0, 0, np.ceil(demand_gap / Case_Qty).astype(int) * Case_Qty )
原理很直接:先把缺口除以Case_Qty得到对应倍数,用np.ceil向上取整到最近的整数,再乘回Case_Qty,就得到了大于等于原缺口的最小倍数。
内容的提问来源于stack exchange,提问作者Addis de la Fuente
相关产品推荐
相关产品推荐

