Python 在指定的频率选项上计算pct_变化

Python 在指定的频率选项上计算pct_变化,python,pandas,database,Python,Pandas,Database,我想计算周/日数据帧的1年、2年、3年增长率: start = '20100101' end = '20201117' df_ts = pd.DataFrame(index=pd.bdate_range(start=start, end=end, freq='D')) df_ts['valeur1'] = range(1, df_ts.shape[0]+1) df_ts['gr'] = 100*df_ts.pct_change(periods=1, freq='Y) df_ts 我认为pc

我想计算周/日数据帧的1年、2年、3年增长率:

start = '20100101'
end = '20201117'

df_ts = pd.DataFrame(index=pd.bdate_range(start=start, end=end, freq='D'))
df_ts['valeur1'] = range(1, df_ts.shape[0]+1)

df_ts['gr'] = 100*df_ts.pct_change(periods=1, freq='Y)
df_ts
我认为
pct\u change(periods=n,freq='Y')
是一个很好的方法,但是我用这个简单的日期得到了一个错误结果

我需要强调的是,在我的数据中,我有每周/每天的数据,并且我操作其他操作,因此我需要将其放入
apply(lambda x:x.pct_change(periods=n,freq='Y')


有什么简单的建议吗?

您正在为列分配一个新的数据框,因为您对数据框而不是列进行了
.pct\u更改。请尝试以下操作:

df_ts['gr'] = df_ts['valeur1'].pct_change(periods=1, freq='Y') 

它产生日历性能,但我希望滚动1年(2年…)增长率我已经得到了:
freq=pd.DateOffset(years=1)
而不是
freq='Y'