Как завершить все oop определенного столбца Dataframe перед вторым последним элементом? - PullRequest
0 голосов
/ 27 января 2020

У меня есть датафрейм df1 с несколькими столбцами. Я использую l oop для определенного столбца RAz и LAz. Я хочу получить доступ к предыдущим 2 значениям и следующим 2 значениям RAz / LAz, чтобы я мог сделать сравнение. Но для первых значений у нас нет предыдущих значений, а для последнего набора значений у нас нет следующего набора значений. Как мне решить эту проблему?

def filter1(Z):
    for index3, item3 in enumerate(Z):
        if (index3 == df1.iloc[0] or index3 == df1.iloc[1] or index3 == df1.iloc[2] or index3 == df1.iloc[-1] or index3 == df1.iloc[-2]) :
            continue
        else:
        #if Z[index3] != 0 and Z[index3-1] != 0:
            #Case 1: When index3 is more than index3-1 and index3+1 e.g 0,255,0,255/0,
            if (Z[index3] >= Z[index3-1]) and (Z[index3] >= Z[index3+1]) : # and (Z[index3+3] > Z[index3+2]):
                if ( Z[index3-1] == Z[index3+1]) :
                        Z[index3] = Z[index3-1] 
                else:
                    if ( Z[index3+2] >= Z[index3+1]) :
                        if ( Z[index3+2] == Z[index3+1]) :
                            Z[index3] == Z[index3+1]
                        else:
                            Z[index3] == Z[index3]                               
            else:
                #Case 2: When index3 is more than index3-1 and less than index3+1 
                if (Z[index3] > Z[index3-1]) and (Z[index3] < Z[index3+1]) : # and (Z[index3+3] > Z[index3+2]):
                    if abs(Z[index3-1] - Z[index3+1]) <= 2:
                        Z[index3] == Z[index3-1]
                    else:
                        if ( Z[index3+2] >= Z[index3+1]): # and ( Z[index3+3] > Z[index3+2]):
                            Z[index3] == Z[index3]
                        else:
                            Z[index3] == (Z[index3-1] + Z[index3+1])/2                                
                else:
                #Case 3: When index3 is less than index3-1 and more than index3+1 
                    if (Z[index3] < Z[index3-1]) and (Z[index3] > Z[index3+1]) : # and (Z[index3+3] > Z[index3+2]):
                        if abs(Z[index3-1] - Z[index3+1]) <= 2:
                            Z[index3] == Z[index3-1]
                        else:
                            if ( Z[index3+1] >= Z[index3+2]): # and ( Z[index3+3] > Z[index3+2]):
                                Z[index3] == Z[index3]
                            else:
                                Z[index3] == (Z[index3-1] + Z[index3+1])/2
filter1(df1.RAz)
filter1(df1.LAz)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...