попадание в бесконечный цикл при использовании цикла while - PullRequest
0 голосов
/ 18 мая 2018

Я использую этот код, чтобы использовать поиск данных для каждой записи в первом кадре.

for i in range(len(a1)):
    title_derived = []
    k = 100000
    print(i)
    for j in range(len(b1)):
        print(j)
        while j < (k + 6):
            #print(b1.iloc[i][10], a1.iloc[j][3])
            if b1.iloc[j][10] == a1.iloc[i][3]:
                print(j,k)
                print('1st if ' + str(j))
                print (b1.iloc[j][1], a1.iloc[i][11], b1.iloc[j][5])
                if (((pd.to_datetime(b1.iloc[j][1]) <= pd.to_datetime(a1.iloc[i][11]) <= pd.to_datetime(b1.iloc[j][5]))) or ((pd.to_datetime(b1.iloc[j][1]) <= pd.to_datetime(a1.iloc[i][8]) <= pd.to_datetime(b1.iloc[j][5])))) :
                    print('2nd if' + str(j))
                    title_derived.append(b1.iloc[j][15])
                    print('inserted ' + b1.iloc[j][15] + ' in ' + str(i) + ' th record ')
                a1.iat[i,65] = title_derived 

Он печатает, 0 0

, а затем переходит в бесконечный цикл.

1 Ответ

0 голосов
/ 18 мая 2018

Может быть, это потому, что вы на длину "b1" меньше значения "k + 6".И в этом случае вы никогда не выйдете из цикла while, а в последнем он выдаст и ошибку.В этом случае вы должны сначала проверить наименьшую возможную длину «b1», а затем решить, какое у вас состояние хитрости.

...