Вы можете использовать pd.Series.shift
и оператор &
для объединения двух логических рядов.
Это установит flag = 1
для каждого экземпляра, где diff < 0.1
в строкегде эта строка и предыдущая строка удовлетворяют условию.
df['flag'] = (df['diff'].lt(0.1) & df['diff'].shift().lt(0.1)).astype(int)
Возможно, более эффективным было бы использование shift
в одном сравнении:
s = df['diff'].lt(0.1)
df['flag'] = (s & s.shift()).astype(int)
Результат:
print(df)
open high low close diff flag
TimeStamp
2018-10-05 19:00:00 6637.90 6645.06 6637.17 6643.52 -0.057705 0
2018-10-05 19:03:00 6643.52 6650.00 6641.00 6649.99 0.002710 1
2018-10-05 19:06:00 6648.91 6650.00 6640.82 6642.85 -0.017769 1
2018-10-05 19:09:00 6642.85 6646.47 6642.00 6646.20 0.000000 1
2018-10-05 19:12:00 6646.20 6646.21 6642.00 6642.40 0.085065 1
2018-10-05 19:15:00 6641.00 6641.84 6636.35 6638.54 -0.024863 1
2018-10-05 19:18:00 6639.26 6643.38 6638.00 6640.00 -0.067340 1
2018-10-05 19:21:00 6642.49 6643.82 6642.47 6643.63 0.104931 0
2018-10-05 19:24:00 6643.78 6645.31 6635.50 6640.02 -0.031497 0