def columns(file_name):
    with open(file_name) as file:
        data = csv.reader(file)
columns = len(next(data))
for column in range(columns):
    with open(file_name) as file:
        data = csv.reader(file)
yield [row[column] for row in data]
Python – получить итератор столбца из файла (без чтения всего файла)