我无法找到这个通用问题的答案。
我们假设以下数据框:
df = pd.DataFrame({'qty':[7,7,7], 'elt':['a','b','c'], 'limit':[2,4,100]})
df
qty elt limit
0 7 a 2
1 7 b 4
2 7 c 100
其中“数量”表示要分配的总量。每个元素“ elt”代表一个批次,并具有可以支持的数量限制。我想确定需要为受限制的每个元素分配多少数量。
结果数据框应为:
df
qty elt limit allocation
0 7 a 2 2
1 7 b 4 4
2 7 c 100 1
有关如何执行此操作的任何建议? :)
答案 0 :(得分:1)
通过np.where
和cumsum
进行检查
df['allocation']=np.where(df.limit.cumsum()<=df.qty,df.limit,df.qty-df.limit.cumsum().shift())
df
Out[806]:
qty elt limit allocation
0 7 a 2 2.0
1 7 b 4 4.0
2 7 c 100 1.0