次のような、多くの列を含む大きな CSV ファイルがあります。
id, col1, col2, col3, col4, col5
1, a, b, 2, d, e
2, b, c, 4, e, f
3, c, d, 6, f, g
特定の列のみを使用する辞書を作成できるようにしたいと考えています。たとえば、辞書には ID 番号、col2、および col3 があります。さらに、col2 に最大 10 個の数値を持つ行のみを格納する必要があります。これは私が持っているコードです:
import csv
reader = csv.DictReader(open('SNPs.csv', newline=''), delimiter=',', quotechar='"')
しかし、特定の列を無視するように指示する方法がわかりません。また、max() を使用して複数の値を返すことができるとは思いません。
max(2, 4) returns 4.
編集 ダニエルのコードを使用してみましたが、何らかの理由でソート機能が正しく機能しません。(ソートの代わりに逆ソートを使用する必要もあります)。4 つの異なるキーのみを出力し、さらに、それらは実際には降順で並べ替えられていません。また、ヘッダーを値の 1 つとして返します。
import csv
f = open('SNPs.csv', "rU")
reader = csv.reader(f)
output = [row for row in reader]
output.sort(key=lambda x: x[32], reverse=True)
print dict((row[10], (row[11], row[8], row[32])) for row in output[:10])