Как выполнить кумулятивное деление в панд python

#python #pandas #numpy

Вопрос:

Я знаю, что было бы больше вопросов для кумулятивного разделения на stackoverflow. Но мой вопрос отличается от этих вопросов.

На самом деле я хочу провести комулятивное разделение, как мы используем комулятивную сумму (cumsum) и комулятивный продукт(cumprod) в python. Но в python нет функции кумулятивного деления. Если у вас есть какая-то альтернатива для этого, тогда скажите мне.

Проблема:- Ниже приведен фрейм данных (DF), в котором мне нужно создать столбец скидки и выполнить накопительное деление в столбце (скидка).

df:-

 Rates        Discount 
0.000028745455   1/(1 Rates)
0.000028745455   Discount[0]/(1 Rates)
0.000028745455   Discount[1]/(1 Rates)
0.000028745455   Discount[2]/(1 Rates)
0.000028745455   Discount[3]/(1 Rates)
0.000028745455   Discount[4]/(1 Rates)
0.000028745455   Discount[5]/(1 Rates)

 

Результат:-

 Rates              Discount 
0.000028745455   0.999971255
0.000028745455   0.999942512
0.000028745455   0.999913769
0.000028745455   0.999885026
0.000028745455   0.999856285
0.000028745455   0.999827545
0.000028745455   0.999798805

 

Ответ №1:

Попробуйте с cumprod

 df['out'] = (1/(df.Rates   1)).cumprod()
Out[538]: 
0    0.999971
1    0.999943
2    0.999914
3    0.999885
4    0.999856
5    0.999828
6    0.999799
Name: Rates, dtype: float64
 

Скидка[1] = Скидка[0]/(1 Тарифы) = 1 / (1 Тарифы)^2

Комментарии:

1. Привет, БЕНИ, я получил желаемый результат. Спасибо. Не могли бы вы объяснить, пожалуйста, как вы это сделали, используя cumprod ()

2. @Скидка Yaser[1] = Скидка[0]/(1 Тарифы) = 1 / (1 Тарифы)^2 вот почему cumprod работает ~