Это мой dataframe:Оптимизация итерационного вычисления значений на основе скорости роста
Date A new_growth_rate
2011/01/01 100
2011/02/01 101
.
2012/01/01 120 0.035
2012/02/01 121 0.035
.
2013/01/01 131 0.036
2013/01/01 133 0.038
Это то, что мне нужно:
Date A new_growth_rate
2011/01/01 100
2011/02/01 101
.
.
2012/01/01 103.62 .035 A=100/(1-0.035)
2012/02/01 104.66 .035 A=101/(1-0.035)
.
.
2013/01/01 107.49 .036 A=103.62/(1-0.036)
2013/02/01 108.68 .038 A=104.66/(1-0.038)
Мне нужно рассчитать значение на основе скорости роста для каждого столбца У меня есть dataframe с 400 столбцами и их соответствующими темпами роста.
Я вычислил скорость роста по следующей формуле: (one year old value)*(1+current month growth rate)
. это рассчитанное значение будет использоваться для получения значения следующего года и т. д. Например, у меня 400 столбцов и их соответствующий темп роста. Временной ряд содержит 30-летние данные
В настоящее время я использую 2 для цикла, чтобы получить каждый столбец, а затем второй для повторения по периоду времени для каждого столбца и получения значений, вычисленных в предыдущем цикле. Требуется несколько часов, чтобы пройти более 500 строк и 400 столбцов. Есть ли лучший способ для этого `
Мой фрагмент кода ниже:
GRPBY = список колонки в dataframe
df_new=pd.DataFrame()
for i,row in grpby.iterrows():
df_csr=grwth.loc[(grwth['A']==row['A'])].copy()
a = pd.to_datetime("2011-12-01",format='%Y-%m-%d')
b = a
while b <a+relativedelta.relativedelta(months=420):
b=b+relativedelta.relativedelta(months=1)
val= df_csr.loc[df_csr['Date']==(b+relativedelta.relativedelta(months=-12))].copy()
val2=val.get_value(val.index[0],'Val')
grwth_r=df_csr.loc[df_csr['date']==b]['new_growth_rate'].copy()
grwth_r2=grwth_r.get_value(grwth_r.index[0],'new_growth_rate')
df_csr.loc[df_csr['Date']==b,'Val']=val2/(1-grwth_r2)
df_new=pd.concat([df_new,df_csr])
Пожалуйста, включите [mcve] (http://stackoverflow.com/help/mcve): (? Что такое 'grwth') дают нам достаточно просто данные, чтобы играть, но не более –
Look для series.rolling.apply –
GRWTH - это список столбцов – Sanjay