Python 计算大熊猫n天生长率

Python 计算大熊猫n天生长率,python,pandas,Python,Pandas,我有一个数据帧,如下所示: 'country_code', 'count_date', 'case_count' CAN , 2020-09-01 , 1700000 CAN , 2020-08-31 , 1650000 ... , .... , .... SGP , .... , .... ... , .... , .... USA

我有一个数据帧,如下所示:

'country_code', 'count_date', 'case_count'
CAN           ,  2020-09-01 ,  1700000
CAN           ,  2020-08-31 ,  1650000
...           ,  ....       ,  ....
SGP           ,  ....       ,  ....
...           ,  ....       ,  ....
USA           ,  ....       ,  ....
...           ,  ....       ,  ....
df['dailynew_cases'] = df.groupby('country_code')['case_count'].diff(-1)
其分类如下:

df = df.sort_values(['country_code','count_date'], ascending=[True,False])
假设f(x)是日期x的case_count,那么我需要计算:

(f(x) - f(x-7))/(f(x-8) - f(x-15)
适用于每个国家/地区\u代码

我可以计算连续日期之间的差异,如下所示:

'country_code', 'count_date', 'case_count'
CAN           ,  2020-09-01 ,  1700000
CAN           ,  2020-08-31 ,  1650000
...           ,  ....       ,  ....
SGP           ,  ....       ,  ....
...           ,  ....       ,  ....
USA           ,  ....       ,  ....
...           ,  ....       ,  ....
df['dailynew_cases'] = df.groupby('country_code')['case_count'].diff(-1)
但如何计算7天(或n天)的增长率,并将其保存在同一DF中的另一列

编辑#1: pct_更改功能与所需输出不匹配。以下是2020年8月29日美国的数值

case_count = [5867633.0, 5573695.0, 5529672.0, 5248806.0] 
count_date = [datetime.date(2020, 8, 28), datetime.date(2020, 8, 21), datetime.date(2020, 8, 20), datetime.date(2020, 8, 14)]
所需输出为
(5867633.0-5573695.0)/(5529672.0-5248806.0)=1.0465

但是pct_的变化给出了0.0518来获得增长率,你可以使用


我可以使用
shift

df['growth_rate'] = df.groupby('country_code').case_count.transform(lambda x: (x.shift(-1) - x.shift(-n)) / (x.shift(-n-1) - x.shift(-n-n))*100)

为此,我必须按升序对日期进行排序?