Панды - Распределение транша с обратным отсчетом - PullRequest
1 голос
/ 19 марта 2019

Мне не удалось найти ответ на эту общую проблему.

Предположим, что следующий кадр данных:

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

В котором 'qty' обозначает общее количество для распределения.Каждый элемент 'elt' представляет транш и имеет предел количества, которое он может поддерживать.Я хочу определить, какое количество должно быть выделено для каждого элемента, ограниченного пределом.

Результирующий кадр данных должен быть:

df
   qty elt  limit  allocation
0    7   a      2           2
1    7   b      4           4
2    7   c    100           1

Любой совет, как это сделать?:)

1 Ответ

1 голос
/ 19 марта 2019

Проверка с 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...