计算groupby函数中的增长率

2024-04-26 22:30:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我有可能由以下代码生成的数据:

import pandas as pd
import numpy as np

end = '20201010'

df = pd.DataFrame()

for i in range(10):
    start = np.random.choice(['20000101', '20100101', '20160101', '20121010'])
    df_tempo = pd.DataFrame({'produit' : 'p'+str(i), 
                            'cat' : 'cat'+str(np.random.choice(4))
                             },
                            index=pd.bdate_range(start=pd.to_datetime(start), 
                                                 end=end, 
                                                 freq=np.random.choice(['D', 'W'])))
    
    df_tempo['valeur'] = np.random.randint(50,100, df_tempo.shape[0])           
    df = pd.concat([df,df_tempo])     
df = df.reset_index().rename(columns={'index':'date'})

df

由此,我想计算每种产品1年(2年,…)的英勇增长率,以及历年的增长率

我想可能是这样的:

df.groupby(['cat','produit']).apply(lambda x: x.iloc[-1]/???)

但我不知道如何获得某个特定日期的x值(向后一年,一年的开始/结束…)

有什么想法吗


Tags: importdataframedfindexasnprangerandom