ИМХО numpy
и tolist
здесь не нужны, у панд есть все для этой задачи:
вернуть все столбцы с максимальными значениями> 1 и выбросить 'size':
cols = df.columns[df.max()>1].drop('size')
и для расчета выбираются только полные столбцы, без подмножеств, поэтому вы можете оставить «ix» или «loc» и индексировать напрямую по именам столбцов:
df[cols] = df[cols].div(df['size'], 0)