大熊猫-倒数付款

时间:2019-03-19 19:53:43

标签: python pandas dataframe

我无法找到这个通用问题的答案。

我们假设以下数据框:

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

有关如何执行此操作的任何建议? :)

1 个答案:

答案 0 :(得分:1)

通过np.wherecumsum进行检查

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