Код Middle Окна и сдвиги обновлено
Накопительная доля выручки клиента
Условие
Дан список заказов [user, ts, amount], ts целое (время заказа, у клиента без повторов). Для каждого заказа посчитайте накопительную долю выручки клиента на этот момент в процентах от всей его выручки, round(..., 1). Верните [[user, ts, share], ...], отсортированный по user, затем по ts. Сумма каждого клиента больше нуля.
Примеры
running_share([["a", 1, 50], ["a", 2, 50], ["b", 1, 10]]) // [["a", 1, 50], ["a", 2, 100], ["b", 1, 100]]
running_share([["a", 3, 30], ["a", 1, 10], ["a", 2, 60]]) // [["a", 1, 10], ["a", 2, 70], ["a", 3, 100]]
running_share([["z", 1, 5]]) // [["z", 1, 100]]
Как подойти
Подсказки: 1
cumsumиtransform("sum")в одной группировке.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Ещё по теме «Окна и сдвиги»
- rolling с center=True в признаках
- Дней с предыдущего заказа клиента
- Самая длинная серия дней подряд: diff и cumsum
- diff и pct_change
- rolling против expanding
- Время между заказами клиента в pandas
- rolling в группах и MultiIndex
- Порядок шагов: интервалы между заказами