У меня есть функция с примером кода, как показано ниже, который имеет два цикла for. Выход l oop работает 1000 раз, а внутренний - около 130 раз. Это способ, которым я могу ускорить код, сейчас выполнение занимает более 15 минут.
Любые указатели будут очень полезны, так как я пытаюсь узнать больше о Python. Приведенный ниже код не полностью исполняемый, но максимально приближенный к реальности.
def gen_scenarios (df_cov,df_risk_factors,df_positions):
v_no_sample = 1000
v_no_pos = df_positions.shape[0] #this dataframe has 130 rows
samples_df = np.random.multivariate_normal(np.mean(df_risk_factors).values,df_cov,v_no_sample)
v_scn_df = pd.DataFrame()
for in in range(0,v_no_sample):
for j in range (0,v_no_pos):
if df_positions.loc[j].col1 == 'A':
dict1 = {'Scn_Num':[i], 'Scn_Ret': [samples_df[df_positions.loc[j].col1.iloc[i],'Price':[100]]
elif df_positions.loc[j].col1 == 'B':
dict1 = {'Scn_Num':[i], 'Scn_Ret': [samples_df[df_positions.loc[j].col1.iloc[i],'Price':[200]]
v_tmp_col_lst = ['Scn_Num','Scn_Ret','Price']
v_df_tmp = pd.DataFframe(dict1,columns=v_tmp_col_lst,index=dict1['Scn_Num'])
v_scn_df = v_scn_df.append(v_df_tmp)
return v_scn_df