Сгруппируйте данные по Variable_3 и найдите первую и последнюю цель в каждой группе.Сравните их:
groups = df.groupby('Variable_3')['Target']
output = groups.first() > groups.last()
Объедините выходные данные со старым кадром данных на основе переменной_3 в качестве индекса:
df = df.set_index('Variable_3').join(output, rsuffix='_r').reset_index()
Преобразуйте логические значения в 1 с и -1 с:
import numpy as np
df['Target_r'] = np.where(df['Target_r'], -1, 1)
Наконец, измените имя нового столбца:
df.rename(columns={'Target_r' : 'Output'}, inplace=True)