2016-12-15 1 views
0

ちょっと、私はPythonでモジュールcsvを使って辞書を作成しようとしています。基本的にweather.csvという名前のExcelファイルで、行辞書のキーは列ヘッダーで、値はその行の値です。 2つの辞書を同時に生成するために複数の列を実行するコードを取得できないため、私は立ち往生しています。また、なぜ私はそれが発生しているのかわからない印刷行['col_list']と言う重要なエラーが表示されます。 col_listは各行のヘッダーです。これまでのコードはここまでです:csv pythonの行と列を使用する

import csv 
def read_file(filename, col_list): 
    filename = 'weather.csv' 
    with open('weather.csv', 'r') as f: 
     reader = csv.DictReader(f)  
     for row in reader:    
      print row['col_list'] 

これは私が出力したいものです。私は欠けているものはかなりシンプルだと思うが、それを理解するのが難しい。

print read_file('weather.csv', ['TemperatureF', 'VisibilityMPH']) 
{'TemperatureF': [30.9, 32.0, 32.0, 32.0, 32.0, 30.9 ...], 
'VisibilityMPH': [10.0, 10.0, 10.0, 10.0, 4.0, 2.5 ...]} 
+0

これは 'pandas'によく似ています。 'pandas.read_csv'でCSVをインポートし、' pandas.DataFrame.to_dict() 'を使って辞書に変換してみてください。 – Jakub

+0

入力データの例の中には、提案された答えをテストするのがずっと簡単です。 –

答えて

1

各列見出しのキーとその列に含まれるすべての値のリストを含む辞書を作成するとどうなりますか?たとえば、 -

import csv 

def read_file(filename, col_list, data={}): 

    with open('weather.csv', 'r') as f: 

     reader = csv.DictReader(f)  
     for num, row in enumerate(reader): 
      if num == 0: continue # skip if it's the first row, which has the headings 
      for col in col_list: 
       if not data.get(col): data[col] = list() 
       data[col].append(row[col]) 

    return data 
+0

ありがとう – Suzaku

0

あなたがpandasを使用することができる場合、私はそれがcsvモジュールよりも、このタスクのためのより良いフィット感だと思います。

import pandas as pd 
df = pd.read_csv(filename, names=col_list) 
dict_ = df.to_dict() 
関連する問題