У меня есть датафрейм 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)