highs = ['High{:d}'.format(x) for x in range(0, 4)]
for h in highs[::-1]:
    mask = df['High'] <= df[h]
df.loc[mask, 'FirstHigh'] = h
Fastest way to find which of two lists of columns of each row is true in a pandas dataframe