pandas, как узнать сколько потребовалось строчек что бы сложить значения в столбце в сумме до 20?
Условие задачи: Сколько дней у ресторана было менее 20 успешных заказов?
date vendor_id successful_orders
39182 2019-06-06 58395 3.0
16289 2019-06-07 58395 1.0
72353 2019-06-11 58395 2.0
57402 2019-06-13 58395 2.0
60595 2019-06-15 58395 2.0
4811 2019-06-17 58395 2.0
41577 2019-06-18 58395 2.0
89448 2019-06-19 58395 2.0
91519 2019-06-20 58395 1.0
25444 2019-06-21 58395 1.0
7956 2019-06-23 58395 1.0
47692 2019-06-24 58395 1.0
30362 2019-06-26 58395 3.0
11791 2019-06-28 58395 1.0
61300 2019-06-29 58395 1.0
47651 2019-06-30 58395 1.0
46090 2019-07-01 58395 4.0
50288 2019-07-02 58395 2.0
55434 2019-07-03 58395 2.0
74493 2019-07-05 58395 4.0
Как мне складывать столбец только до тех пор пока не будет нужной суммы, а потом вывести сколько на это потребовалось строчек?
Ответы (2 шт):
Судя по условию задачи ("Сколько дней у ресторана было менее 20 успешных заказов?"), вам не нужно складывать значения в столбце, а нужно узнать количество значений в столбце, которые меньше 20.
lst = []
for i in df['successful_orders']:
if i < 20:
lst.append(i)
len(lst)
Считаем cumsum, делаем фильтр по всем получившимся значениям, которые меньше заданного лимита, суммируем значения True.
(df.successful_orders.cumsum()) < 20).sum()
UPD
Спасибо Алексей Р за подсказку в комментариях.
Применение метода .lt() вместо сравнения дает экономию во времени исполнения кода около 30%. Вот окончательное решение:
df.successful_orders.cumsum().lt(20).sum()