Итак, я python новичок ie, ищу человека с идеей о том, как оптимизировать мой код. Я работаю с электронной таблицей с более чем 6000 строк, и эта часть моего кода кажется действительно неэффективной.
for x in range(0,len(df):
if df.at[x,'Streak_currency'] != str(df.at[x,'Currency']):
df.at[x, 'Martingale'] = df.at[x-1, 'Martingale'] + (df.at[x-1, 'Martingale'] )/64
x+=1
if df.at[x,'Streak_currency'] == str(df.at[x,'Currency']):
x+=1
Это может занять до 8 минут. С моим ограниченным знанием мне удается изменить только df.lo c на df.at, и это очень помогло. Но я х
ОБНОВЛЕНИЕ
В этом разделе кода я пытаюсь применить функцию на основе предыдущего значения, пока не будет выполнено определенное условие, в в этом случае df.at [x, 'Streak_currency']! = str (df.at [x, 'Currency']):
Я действительно не понимаю Не знаю, почему эта итерация занимает так много времени. Теоретически, он должен смотреть только на предыдущее значение и применять функцию. Вот пример вывода:
Periodo Currency ... Agrupamento Martingale
0 1 GBPUSD 1 1.583720 <--- starts aplying a function over and over.
1 1 GBPUSD 1 1.608466
2 1 GBPUSD 1 1.633598
3 1 GBPUSD 1 1.659123
4 1 GBPUSD 1 1.685047
5 1 GBPUSD 1 1.711376 <- stops aplying, since Currency changed
6 1 EURCHF 2 1.256550
7 1 USDCAD 3 1.008720 <- starts applying again until currency changes
8 1 USDCAD 3 1.024481
9 1 USDCAD 3 1.040489
10 1 GBPAUD 4 1.603080