0

約1000人の個人(行)の約170列分の数値データ(列)を含む大きなcsvファイルがあります。私がやりたいのは、特定のケースの特定の値をcsvファイルからテキストファイルにパイプすることです。

具体的には、私のcsvファイルはID番号(ケース)の列と、各ケースのさまざまな数値データポイントを含む約170列で始まります。csvファイルを繰り返し処理し、「CASE156」(例として)の列17(例として)をプルして、その場所のデータを次のように保存します。

CASE156_column_17.txt

最初にデータを読み込むために、Pythoncsvビルトインを次のように使用しています。

f =csv.reader(open('genotypes.csv','rbU'))

私が試してみました

rownum=0
for row in f:
     if rownum=='CASE156':
         print column[16]

ただし、これでは目的の結果が得られません。特定のケースの特定の列のデータを取得するにはどうすればよいですか?

さらに複雑なことに、そのセルにデータがない場合は、それをスキップして.txtファイルを作成しないようにします。

よろしくお願いします。

4

1 に答える 1

2

探しているキーが列「key_index」にあると仮定して、次を使用できます。

f = csv.reader(open('genotypes.csv','rbU'))
key_index = 22  # assuming that this column contains something like 'CASE156'
for rownum, row in enumerate(f):
    if row[key_index] == 'CASE156':
         print row[16]

基本的な Python ドキュメントを読んでいただければ幸いです。

列番号でしかアクセスできない行の代わりに、dict を使用DictReaderして CSV データをもう少し親しみやすくすることもできます。

http://docs.python.org/2/library/csv.html#csv.DictWriter

于 2013-01-02T18:18:47.117 に答える