Условная совокупная сумма панд по рангу - PullRequest
0 голосов
/ 03 декабря 2018

Найти совокупную сумму продаж для всех клиентов ниже его уровня продаж.Выход - столбец cum_sales.

Пример

| Customer | Product | sales | cum_sales |  rank |
|:--------:|:-------:|:-----:|:---------:|:-:|
|    Jon   |    Y    |   2   |     2     | 2 |
|    Abe   |    Y    |   3   |     5     | 1 |
|    Jon   |    X    |   10  |     17    | 2 |
|    ABE   |    X    |   5   |     7     | 3 |
|    RON   |    X    |   20  |     37    | 1 |
|   MIRA   |    X    |   2   |     2     | 4 |

Как это сделать в пандах.Если посмотреть на Джона с продуктом Х, его значение cum_sales равно сумме (Мира + Абэ + Джон) только потому, что их продажи ниже Джона.

Смысл в том, чтобы ранжировать их по продажам, а затем суммировать продажи всехклиент ниже текущего ранга клиента.Не знаю, как сравнить текущее значение со всеми другими значениями столбца и применить функцию к этому подмножеству данных.

Заранее спасибо.

1 Ответ

0 голосов
/ 03 декабря 2018

сначала используйте группу данных в кадре данных по продажам и используйте функцию максимальной агрегации, например,

df.groupby('sales').max()

и рассчитайте совокупное значение, используя этот код

df['cum_sales']=df['sales'].cumsum()

`

...