csvファイルで要求していることを直接行う方法はおそらくありません(私があなたを誤解していない限り)。問題は、ファイルが固定幅の行を持つように特別に設計されていない限り、ファイルに「列」があるという意味のある意味がないことです。CSVファイルは通常そのように設計されていません。ディスク上では、それらは巨大な文字列にすぎません。
>>> import csv
>>> with open('foo.csv', 'wb') as f:
... writer = csv.writer(f)
... for i in range(0, 100, 10):
... writer.writerow(range(i, i + 10))
...
>>> with open('foo.csv', 'r') as f:
... f.read()
...
'0,1,2,3,4,5,6,7,8,9\r\n10,11,12,13,14,15,16,17,18,19\r\n20..(output truncated)..
ご覧のとおり、列フィールドは予想どおりに整列していません。2番目の列はインデックス2から始まりますが、次の行では、列の幅が1つ増えて、配置がずれます。入力長が変化すると、これはさらに悪化します。結果として、csvリーダーはファイル全体を読み取る必要があり、使用しないデータは破棄されます。(それを気にしないのであれば、それが答えです。ファイル全体を1行ずつ読み、使用しないデータを破棄します。)
スペースを無駄にすることを気にせず、データが固定幅より長くならないことがわかっている場合は、固定幅フィールドを使用してファイルを作成し、オフセットを使用してファイルを検索できます。しかし、それを実行したら、実際のデータベースの使用を開始することもできます。PyTablesは、numpy配列を格納するための多くの人のお気に入りの選択肢のようです。