col_ind = np.argsort(data.values, axis=0)[::-1, :]
ind_to_take = col_ind[:3, :] + np.arange(data.shape[1]) * data.shape[0]
np.take(data.values.T, ind_to_take)
Получите самые большие значения из каждого столбца pandas.DataFrame