Найти колличество элементов, c разницей 0.3 pandas

Есть dataframe[[f1,f2,time]], в котором надо найти кол-во строк, разница time между которыми меньше 0.3 Ищу таким образом:

df = pd.read_csv('input.csv', delimiter=',').set_index('id').sort_values('time')
i = 1
while len(dd) > 0:
    dd = df.diff(periods=i).query('f1 == 0 and f2 == 0 and time < 0.3')
    i += 1

Код выполняется ужасно долго, нет ли способа это упростить?

Есть вот такой код, который выполняет всё тоже самое, но с памятью всё плохо

in_df = pd.read_csv(input_file, delimiter=',')
out_list = {'id':[], 'count':[]}
 
for f1 in range(M):
    for f2 in range(M):
        df = in_df.query(f'f1 == {f1} and f2 == {f2}').sort_values('time', ascending=False)[['id', 'time']]
        work_list = df.values.tolist()
       
        while len(work_list) > 0:
            _, time = work_list.pop(0)
            out_list['id'].append(int(_))
            count = 0

            for row in work_list:
                if time - row[1] < dt:
                    count += 1
                else:
                    break   
            out_list['count'].append(count)

Пример входного файла:

id,f1,f2,time
0,1,0,0.206520219143
1,0,0,0.233725001118
2,0,1,0.760992754734
3,1,1,0.92776979943
4,1,0,0.569711498585
5,0,1,0.99224586863
6,0,0,0.593264390713
7,1,0,0.694181201747
8,1,1,0.823812651856
9,0,1,0.906011017725

Выходного:

id,count
0,0
1,0
2,0
3,1
4,0
5,2
6,0
7,1
8,0
9,1

Ответы (0 шт):