Сократить время, необходимое для функции - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть функция с примером кода, как показано ниже, который имеет два цикла 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...