Я полагаю, что сдвиг - вот путь,
Я начинаю с создания фрейма данных и двух столбцов, один из которых смещен для отображения следующего числа, другой - для отображения предыдущего номера в той же строке.Я также создаю пустой столбец, в который мы введем вашу цель (C2)
df = pd.DataFrame([3,2,5,3,2,4], columns=['C1'])
df['P'] = df.C1.shift(1).fillna(0)
df['N'] = df.C1.shift(-1).fillna(0)
df['C2'] = np.nan
, давая нам:
C1 P N C2
0 3 0.0 2.0 NaN
1 2 3.0 5.0 NaN
2 5 2.0 3.0 NaN
3 3 5.0 2.0 NaN
4 2 3.0 4.0 NaN
5 4 2.0 0.0 NaN
Затем мы сделаем сравнения, отбросим два сдвинутых столбца, которые мы сделалии все готово!
for index, row in df.iterrows():
if (row.P < row.C1) and (row.C1 > row.N):
df.at[index, 'C2'] = 0
elif (row.P > row.C1) and (row.C1 < row.N):
df.at[index, 'C2'] = 1
elif (row.P < row.C1) and (row.C1 < row.N):
df.at[index, 'C2'] = 2
elif (row.P > row.C1) and (row.C1 > row.N):
df.at[index, 'C2'] = 3
df.drop(['P', 'N'], 1, inplace=True)
Это оставляет нам:
C1 C2
0 3 0.0
1 2 1.0
2 5 0.0
3 3 3.0
4 2 1.0
5 4 0.0
Надеюсь, это поможет!