2017-10-02 11 views
1

csvファイル内の特定の7つの列を各列に対して100回取得しようとしています。これは私がやってきたことです。私はそれが非効率的だと知っていますが、私はそれらを100回追加する方法だけを知っていればうまくいくようです。csvファイル内の特定の列を効率的に取得する

data_file_path = '2001-1.csv' 
counter = 0 

col0 = [] 
col1 = [] 
col2 = [] 
col13 = [] 
col16 = [] 
col17 = [] 
col18 = [] 

with open(data_file_path, 'r', encoding="latin-1") as fin: 
    splitted = csv.reader(fin, delimiter = ',') 
    next(splitted) 

    for col in splitted: 
     counter += 1 
     col0.append(col[0]) 
     if(counter == 100): 
      counter = 0 
     col1.append(col[1]) 
     if(counter == 100): 
      counter = 0 
     col2.append(col[2]) 
     if(counter == 100): 
      counter = 0    
     col13.append(col[13]) 
     if(counter == 100): 
      counter = 0 
     col16.append(col[16]) 
     if(counter == 100): 
      counter = 0 
     col17.append(col[17]) 
     if(counter == 100): 
      counter = 0 
     col18.append(col[18]) 
     if(counter == 100): 
      counter = 0 
      break 

flight_data = [col0, col1, col2, col13, col16, col17, col18] 

しかし、それを効率的に行う方法を知っているとよいでしょう。

+0

ご質問が十分に処理された場合は、[回答を受け入れる](https://stackoverflow.com/help/someone-answers)をご利用ください。 –

答えて

0

colここでは、行とcherrypicking列を反復処理しているので、誤った名前です。

辞書を使用し、列のリストを保持します。コードを小さく入れ子にしてループさせることができます。

idx = [0, 1, 2, 13, 16, 17, 18] 
data = {k : [] for k in idx} 
with open(data_file_path, 'r', encoding="latin-1") as fin: 
    reader = csv.reader(fin, delimiter = ',') 
    next(reader) 

    for row in reader: 
     for i in idx: 
      data[i].extend([row[i]] * 100) 
関連する問題